2

オブジェクトに対していくつかのメソッドを実行する必要がある場合、どのソリューションを好みますか?

コードはそれ自体を物語っているはずです:

class Foo
  def self.build
    foo = new
    foo.first
    foo.second
    foo
  end

  def first
  end

  def second
  end
end

class Bar
  def self.build
    new.first.second
  end

  def first
    self
  end

  def second
    self
  end
end
4

2 に答える 2

1

これらのメソッドを呼び出す回数に依存すると思います。彼らはここで頻繁に召集されるのでしょうか、それとも一度だけ召集されるのでしょうか? 一度だけの場合は、不必要selfにリターンを渡さないため、2 行のアプローチを使用します。頻繁に発生する場合は、両方を連続して呼び出す別のメソッドを作成します。

于 2012-09-18T02:23:40.783 に答える
0

これはトレードオフです。答えは、(1) 重要性と (2) 周囲のコードの複雑さによって異なります。プログラマーとして決定を下さなければならないのはあなたです。パイプ形式は短く、垂直方向のスペースを節約します。スパース形式はデバッグが容易です。メソッド キーワードの選択方法によっては、インライン フォームが人間の文章のように読める場合もありますが、場合によっては、スパース フォームの方が人間が読みやすい場合もあります。メソッドが大規模に開発されている場合は、スパースな記述方法を使用してください。安定化されたコードの場合は、パイプ形式でも問題ありません。テストなど、それほど重要でないコードの場合は、パイプ形式を使用するのが好きです。実際、私はそれがとても好きで、ドットを省略することさえあるので、私のFizzBu ​​zz プログラムは次のようになります。カスタム ライブラリを使用すると、密なドットなしの 1 文字メソッドのダブル バレル パイピングが可能になります。

(1..100).τᴍ⁒i⁇χ( 3, 0, "fizz", nil ).πᴍ⁒i⁇χ( 5, 0, "buzz", nil ).πγZᴍjτ

だから覚えておいてください、1行のパイピングは何もありません.上記のようなプログラムは、Rubyで「本当に悪いスタイル」と言うときの意味です:)))

于 2012-09-18T04:37:26.887 に答える