3
something.each do |x|

  #lots of stuff

end if some_condition
4

6 に答える 6

8

一般的な方法は、ワンライナーの場合にのみステートメント修飾子を使用することだと思います。それ以外の場合はすべて、C や Java などで普及している通常の if スタイルを使用します。

bail_out if reqd_param.nil?

if its_gonna_be_long then
  long_exec stmt1
  long_exec stmt2
  ....
end
于 2008-10-16T16:56:38.960 に答える
3

個人的には、見落としがちすぎるという純粋かつ単純な理由から、これに反対したいと思います。その短縮バージョンでさえ、あなたが持っていることに気付くのに二度手間がかかりました

if some_condition

最後に

于 2008-10-16T15:24:10.127 に答える
1

読者が混乱する可能性が非常に高いと思うので、条件文の修飾子形式を使用することはほとんどありません。それは部下と話している役員のようなものです:

<軍曹>あなたの命令はその丘を登って敵を偵察することです!
<プライベート>YESSIR!*丘を駆け上がり始めます*
<軍曹>...ただし、双眼鏡を持っている場合に限ります。

私がそれを許容できると考えるのは、変更されたものが非常に小さいために条件がはっきりと見える場合だけです。

do loop
  #..。
  次のif条件
  #..。
終わり
于 2008-10-16T16:45:41.400 に答える
1

長いコードブロック自体は悪い習慣です。より小さなブロックにリファクタリングします。

長いブロックの後の修飾子は地獄への道です。

于 2008-10-16T16:51:50.840 に答える
-1

私が働いている組織では、そのような構造に書き直しのフラグを立て始めました。

于 2008-10-16T15:40:49.703 に答える
-1

上記の例は、いくつかのネストされたブロック内に存在する特定のケースでは完全に問題ないと思います。上記のコードが 4 レベルの深さである場合、別のレベルを削除しています。したがって、場合によっては、上記のスタイルによって実際に読みやすさが向上することがあります。ブロック内のステートメントは 20 以下であると想定していることに注意してください。

于 2008-10-16T16:01:50.707 に答える