Ruby:除非vs,否则

时间:2011-09-22 19:04:10

标签: ruby coding-style

我发现自己更喜欢if not而不是unless。是否有正确的方法来编写这种情况?人们通常如何看待unless

3 个答案:

答案 0 :(得分:37)

我希望这可以帮助你:
https://github.com/bbatsov/ruby-style-guide

我个人同意那里写的内容选择unless something超过if !something修饰符和简单修饰符以及else更喜欢if

答案 1 :(得分:26)

我每次都使用unless,除非有else子句。

所以,我会用

unless blah_blah
  ...
end

但如果有其他条件,我会使用if not(或if !

if !blah_blah
 ...
else
 ...
end

使用if !数年和数年后,实际上花了一段时间才习惯unless。现在我更喜欢它,在每种情况下,大声朗读都听起来很自然。

我也喜欢使用尾随unless

increment_by_one unless max_value_reached我明显使用这些方法/变量名作为可读性示例 - 在我看来,代码的结构基本上应遵循该模式。

从更广泛的意义上讲,结构应该是:take_action unless exception_applies

答案 2 :(得分:10)

if not condition很少使用。 Ruby程序员(通常来自其他语言)倾向于使用if !condition

另一方面,除非在单一条件和听起来可读的情况下被广泛使用。

另请参阅making sense with Ruby unless以获取有关除非编码样式的进一步建议。