これは非常に幅広い質問であり、主観的な偏見の余地が十分にあります。
読みやすさは常に良いことだと一般に認められています。とはいえ、人によって読めるものは異なります。
たとえば、あなたの例から、私は実際には2番目のバリアントを好みます。
コードを広げれば助かる、と言う人はたくさんいますが、あまり広げられていない (制限内で!) コードを好む人 (私自身も含む) もいます。コードの「形状」(構造、ループ、条件など)を離れた場所に表示します。
あなたの例では、どちらか一方のバリアントを使用しても、読みやすさにはほとんど影響しません。しかし、次のような式があるとします。
r1 = $r*(($objcols-i).to_f+j+k)*3/total_objs
それにはより多くの用語が含まれているため、目で見るのははるかに困難です。あなたはそれを引き離すことができます:
t1 = ($objcols-i).to_f
t2 = t1 + j + k
t3 = $r * t2 * 3
r1 = t3 / total_objs
しかし、それはそれをより読みやすくしますか?実際には、この特定の公式は、見栄えのよいランダムな回転を生成する魔法の公式にすぎません。
水平に広げることで妥協できます。
r1 = $r*( ($objcols-i).to_f+j+k ) * 3 / total_objs
これは、少なくとも主要な用語をグループ化するのに役立ちます。
しかし、結局のところ、私たちはマイクロについて話している. 誰かがそのスニペットを理解するのに 3 秒かかるか 10 秒かかるかは重要ではありません。これらはより重要です:
- 表現の理由は明らかでなければなりません。コード自体から明らかでない場合は、それを説明するコメントが必要です。
- コードは簡単にナビゲートできる必要があります。これの意味は:
- 繰り返しコードの排除/削減
- プログラムを小さすぎたり大きすぎたりしない関数に分割します。繰り返しになりますが、「小さすぎる」と「大きすぎる」は主観的な用語であり、多くの場合例外があります。
- より複雑で高レベルな構造 (相互作用するクラスの大規模なネットワークなど) を多くのコメントとともに説明します。
最後に、これができることをご存知ですか?(少なくとも Ruby 1.9+ では):
random_animal = animals.sample
からランダムな要素を取りますanimals
。