3
something.each do |x|

  #lots of stuff

end if some_condition
4

6 回答 6

8

我认为流行的方法是仅在语句修饰符是 one-liner 时才使用它。在所有其他情况下,使用 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

I'd personally advocate against that for the pure and simple reason that it is too easy to miss. Even with that shortened version it took me a double-take to realise you had the

if some_condition

at the end

于 2008-10-16T15:24:10.127 回答
1

我几乎从不使用条件句的修饰语形式,因为我认为有太多可能让读者感到困惑。这就像一个军官和一个下属说话:

<中士> 你的命令是爬上那座小山侦察敌人!
<私人> 是的,先生!*开始往山上跑*
<中士> ...但前提是你有双筒望远镜。

我唯一认为可以接受的情况是当修改的东西很小以至于可以清楚地看到条件时,例如

做循环
  # ...
  下一个 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 回答