1

如果这个问题在某个地方得到了回答,我深表歉意,但我不确定我的措辞是否适合谷歌,而且我还没有在任何风格指南中看到它。

由于 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 的吗?支持您观点的来源?

4

2 回答 2

1

就文档指南而言,我唯一能想到的是谷歌指南,它告诫“不要使用andand or;总是使用&&and||来代替。”。

除此之外,它在某种程度上取决于上下文。如果您所拥有的只是在一个条件为真而另一个条件为假时要执行的代码,那么我肯定会将它们放在一个 if with 中&& !

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

另一方面,如果第一个条件为真,即使第二个条件也为真,您可能还会执行其他代码;在这种情况下,嵌套的unlessorif是有意义的:

if array 
    do stuff! unless array.include? 'Bob'
    do other stuff anyway
end
于 2012-04-22T01:24:38.243 回答
0

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

如果你使用 Rails,你可以try像这样使用 ActiveSupport 扩展:

if array.try(:include?, 'Bob')
  # Do stuff
于 2012-04-22T09:37:31.903 回答