質問: cog end end def ratio chainring / cog.to_f end end ``` このようにする理由として、@cogのインスタンス変数が10箇所で参照されていたとすると、@cogを修正する必要が生じた場合、修正するために何箇所ものコードを変更する必要があるからとあります。 しかしながら、もし変更するとしてもコード1のinitializeメソッドを修正するだけでやりたい動きができるのではないでしょうか。実際やってみましたが、問題なく動きました。 上のような例の場合、直接インスタンス変数を参照しに行く書き方が良くない理由をご教授いただけたらと思います。 何卒、宜しくおねがいします。
回答: オートマの車を想像するとよいかと思います。 車の速度によって歯車のcogが変わる場合は`initialize`一箇所を書き換えるだけでは対応できず `@cog`を参照する場所で対応が必要になります。