0

時々私は次のようなコードを見ます

class Thing
  def self.add_em(a,b)
    a+b
  end
end

そして時々私は見る

class Thing
  def self.add_em(a,b)
    @a=a
    @b=b
    @a+@b
  end
end

渡されたパラメーターを使用するだけでなく、いつ/なぜ@インスタンス変数を使用する必要がありますか?

理由の 1 つは、これらの変数を他のメソッドで使用したい場合、インスタンス変数が使用可能になり、ローカルのパラメーター ベースの変数が使用できないことだと思います。ただし、変数が他のメソッドで使用されていない場合でも、@ 変数が使用されていることがよくあります。

そのため、渡されたすべてのパラメーターのメソッドの開始時に @a=a @b=b のパターンが頻繁に使用されていることがわかりますが、それらがそのメソッドで使用されているだけの場合、正確な理由はわかりません。それらが他の方法で使用される場合の単なる慣例ですか?

4

2 に答える 2

1

引数をインスタンス変数として参照する計画があったため、それを行ったと言えます。そうでない場合、彼らは YAGNI に失敗しました (原則は必要ありません)。彼らが途中で気が変わった場合(これは起こることが知られています...)、彼らは片付けを忘れていました.

于 2013-07-20T12:32:55.897 に答える