可能であれば、インスタンス変数にオブジェクトの属性を参照するという規則があります。 Practical Object-Oriented Design in Rubyは言う:object.initializeでは、selfを使う方が良いでしょうか。 @以上?
は常にアクセサメソッドの代わりに、直接変数を参照 でインスタンス変数をラップ...
この
は私が言い換えてきた例で示されている:class Gear
attr_reader :chainring, :cog
...
def ratio
# this is bad
# @chainring/@cog.to_f
# this is good
chainring/cog.to_f
end
インスタンス変数で新しいオブジェクトを作成するのが最も一般的な方法は次のとおりです。
class Book
attr_accessor :title
def initialize(title)
@title = title
end
end
@title=
は、インスタンス変数title
に直接アクセスします。 の「属性を超えた属性」の規約に従うと仮定すると、self.title=
,which would tell the object to send itself the message title=
を使用して、属性writeメソッドをインスタンス変数より直接使用する方が適切ですか?
class Book
attr_accessor :title
def initialize(title)
self.title = title
end
end
インスタンス変数を読み込むを参照して、「インスタンス変数を超える属性」についての本会談を、それはまた、書き込みには適用されませんか?
'self.feature ='が '@ feature ='よりも望ましい場合があります。一般的に、 'self.'シェルに代入するとより多くのactionaを実行して割り当てを行うことになります。第2に、https://github.com/3aHyga/ruby-style-guideで、あなたは良いスタイル 'self.feature ='が複雑な割り当て(これは単にインスタンス変数)が発生します。 'feature ==" value "'のように常に読み込まれた構文の場合 –