多くのコードで見られるもの:
class Foo
attr_accessor :bar
# lots of code omitted
def baz
'qux' if bar
end
end
baz メソッドの正確な形式はそれほど重要ではありません。インスタンスのクラス内から呼び出されるbar
インスタンス変数の getter メソッドへの参照がここにあるだけです。明示的@bar
に値を取得することをお勧めします。@bar
これについて何か意見はありますか?ルビー スタイル ガイドなどで、これをカバーしているものを見たことがありません。個人的には、前者を実行すると、特にクラスが数百行を超える場合に、読みにくく理解しにくくなることがわかりました。
編集:
この設計の扱いにくさを説明するために、かなり標準的な初期化メソッドを再評価してみましょう。
class Foo
attr_accessor :bar, :qux
def initialize(bar, qux)
@bar = bar
@qux = qux
end
end
セッターメソッドを使用する場合bar = ?
、類推して使用することはできません。代わりに、次のものがあります。
class Foo
attr_accessor :bar, :qux
def initialize(bar, qux)
self.bar = bar
self.qux = qux
end
end
最初のエレガンスの一部が失われました。setter メソッドを自由に書き直して を廃止できるという点で、より柔軟な設計になっていattr_writer
ます。しかし、私はスタイルのポイントをいくつか挙げただけで、Russ Olsen が Rails だけでなく Ruby のデザイン「パターン」を宣言した、その逆ではなく、慣習よりも構成に似ているように感じます。