我有一行代码如下:
if a && b && c && d && e && f
是否有推荐的方法来清理它?也许某种方式将它移动到多行?
答案 0 :(得分:5)
是的,你可以把它写成多行,这在你有很多条件时很常见。
if a && b &&
c && d &&
e && f
do_something
else
"Well, with all those conditions, it wasn't likely anyway, was it?"
end
(就个人而言,我倾向于将长分组条件组合成变量,以便if-expression中的条件很短,并且很容易遵循逻辑。你可以使用相同的多行语法。 )
答案 1 :(得分:1)
如果这是在方法定义中,如果不满足条件则无需再做任何事情,那么
return unless a
return unless b
return unless c
return unless d
return unless e
return unless f
... # Do something
否则
...
tap do
break unless a
break unless b
break unless c
break unless d
break unless e
break unless f
... # Do something
end
...
答案 2 :(得分:-1)
由于所有关于可读性与速度的关系我更新了这个答案,如果速度是一个问题,请添加if Condition.true?在行尾。这种方法的好处是您不需要对需要检查的条件数量进行限制。
class Condition
@@is = true
def self.true?
@@is
end
def self.add condition
@@is = @@is && condition
end
end
x = 0
Condition.add "a very long string equals" == "a very long string equals" if Condition.true?
puts Condition.true?
Condition.add "a very long string equals" == "another long string" if Condition.true?
puts Condition.true?
Condition.add "a very long string equals" == "another veeeeeeeeeeeeery long string" if Condition.true?
puts Condition.true?
Condition.add x = 1 if Condition.true?
puts Condition.true?
puts x
给出
true
false
false
false
0