在Ruby中编写true和false条件的首选方法

时间:2012-04-22 00:28:21

标签: ruby coding-style logic

如果这个问题在某个地方得到解答,我很抱歉,但我不是肯定的,我正在为Google做好准备,而且我还没有在任何风格指南中看到它。

由于Ruby有多种方法可以在条件中显示否定性,因此编写条件的首选方法是检查一个部分是否为真且一个部分是假的?例如:

if array && !array.include?('Bob')
  #do stuff!

但你也可以说:

if array
  #do stuff! unless array.include?('Bob')

或:

if array && not array.include?('Bob')
  #do stuff

或:

if !array.nil? && !array.include?('Bob')

或古怪的双重除非:

unless array.nil?
  #do stuff unless array.include?('Bob')

还有其他几个人。任何被认为是最Rubyish的想法?来源支持你的意见吗?

2 个答案:

答案 0 :(得分:1)

就记录在案的指南而言,我唯一可以想到的是指导“不要使用andor的Google指南;始终使用&&和{{ 1}}而不是。“

除此之外,它在某种程度上取决于上下文。如果只有一个条件为真且另一个条件为假,那么你所拥有的代码就是执行代码,那么如果有||,我肯定会将它们放在一个代码中:

&& !

另一方面,如果第一个条件为真,即使第二个条件也为真,你可能会有执行的附加代码;在这种情况下,嵌套的if array && !array.include?('Bob') #do stuff! unless是有道理的:

if

答案 1 :(得分:0)

不提高可读性,但仍然很有趣。

如果你使用Rails,你可以使用ActiveSupport try扩展名:

if array.try(:include?, 'Bob')
  # Do stuff