このような:
puts "Today my ostrich laid #{@eggs_laid - @stillborn - @wolves_ate} valid eggs."
これが文字通り、この特定の計算を必要とする唯一の場所である場合、valid_eggs
関数を作成する意味はありますか?
このような:
puts "Today my ostrich laid #{@eggs_laid - @stillborn - @wolves_ate} valid eggs."
これが文字通り、この特定の計算を必要とする唯一の場所である場合、valid_eggs
関数を作成する意味はありますか?
それは本質的に悪いことではありません。ただし、式が複雑になると、コードの可読性が低下します。ここに 2 つのスニペットを入れましたが、どちらが読みやすいでしょうか?
puts "Today my ostrich laid #{@eggs_laid - @stillborn - @wolves_ate} valid eggs."
valid_eggs = @eggs_laid - @stillborn - @wolves_ate
puts "Today my ostrich laid #{valid_eggs} valid eggs."
絶対違う。インターポレーター内にコードを#{...}
入れることは、Ruby の楽しみの正当な部分です。読みやすくするために、次のことを検討してください。
puts "Today my ostrich laid %s valid eggs." % ( @eggs_laid - @stillborn - @wolves_ate )
ただし、%
補間と#{...}
補間は 2 つの異なる種類の楽しみであり、完全に互換性があるわけではないことに注意してください。
これは明らかだと思います-少なくとも変数名は理にかなっています。純粋主義者は、それをメソッドに抽出すべきだと言うかもしれませんが、実際には、YAGNI (You Ain't Gonna Need It) は ruby にも適用されます。
2番目にそれを行う必要がある場合は、メソッドにします。あなたはすでにそれについて考えました。
他の回答が述べているように、明らかにこれは議論の余地があります。
操作を確実に抽出する必要がある 1 つのケースは、操作に副作用がある場合です。
表現が参照透過的である限り、それは好みと主観的な可読性の問題にすぎません。