7

このような:

puts "Today my ostrich laid #{@eggs_laid - @stillborn - @wolves_ate} valid eggs."

これが文字通り、この特定の計算を必要とする唯一の場所である場合、valid_eggs関数を作成する意味はありますか?

4

5 に答える 5

5

それは本質的に悪いことではありません。ただし、式が複雑になると、コードの可読性が低下します。ここに 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."
于 2013-06-19T13:04:47.387 に答える
3

絶対違う。インターポレーター内にコードを#{...}入れることは、Ruby の楽しみの正当な部分です。読みやすくするために、次のことを検討してください。

puts "Today my ostrich laid %s valid eggs." % ( @eggs_laid - @stillborn - @wolves_ate )

ただし、%補間と#{...}補間は 2 つの異なる種類の楽しみであり、完全に互換性があるわけではないことに注意してください。

于 2013-06-19T13:04:53.783 に答える
2

これは明らかだと思います-少なくとも変数名は理にかなっています。純粋主義者は、それをメソッドに抽出すべきだと言うかもしれませんが、実際には、YAGNI (You Ain't Gonna Need It) は ruby​​ にも適用されます。

2番目にそれを行う必要がある場合は、メソッドにします。あなたはすでにそれについて考えました。

于 2013-06-19T13:05:08.603 に答える
1

他の回答が述べているように、明らかにこれは議論の余地があります。

操作を確実に抽出する必要がある 1 つのケースは、操作に副作用がある場合です。

表現が参照透過的である限り、それは好みと主観的な可読性の問題にすぎません。

于 2013-06-19T13:29:21.200 に答える