unless 在 2 个或以上的 conditions 时,阅读和梳理让我有点头痛。相反用 if 的话,至少阅读和逻辑流畅度感觉要顺畅一些。
平时我用 unless 只有一个场景,那就是避免用
if !true
...
end
此时
unless true
...
end
就显得很简单明了。
是单纯我自己用 unless 太少的原因,还是大伙都是和我一样?
我也是,一直告诉自己 注意啦,是反的,是反的,注意 && 或者 || ,可能需要变符号!所以感觉读的很累。
看来不是我一个人的问题了,哈哈
对,我说的其实也是这么个意思。我觉得要尽量避免出现下面这样子的
return if a == 1
return unless b == 2
return 如果全是 if,那么就把条件当作过滤器看。如果都是 unless,那么就相当于声明了接下来代码的执行环境
用的比较多的规范是 (应该也是 rubocop 默认的) 如果只有一个条件unless condition
优于if !condition
,两个以上条件用if
,比如if condition1 || condition2
我脑容量比较小,每次看到 unless 会卡壳。所以写代码会倾向于用 if !xxx
,但是 RubyMine 会自作聪明的帮我改成 unless.
你把 unless 理解成 Swift 里面的 guard 就对了,用来做保证否则 early exit:
return unless object.valid?