前几天我在寻找一个 Ruby 代码质量工具,偶然发现了pelusa gem,它看起来很有趣。它检查的一件事是给定 Ruby 文件中使用的 else 语句的数量。
我的问题是,为什么这些不好?我知道if/else
语句通常会增加很多复杂性(我知道目标是降低代码复杂性),但是如果没有else
?
回顾一下,我有两个问题:
1) 除了降低代码复杂性之外,还有其他原因可以避免 else 语句吗?
2) 这是我正在开发的应用程序中使用else
语句的示例方法。没有人你会怎么写这个?我能想到的唯一选择是三元语句,但这里有足够的逻辑,我认为三元语句实际上会更复杂,更难阅读。
def deliver_email_verification_instructions
if Rails.env.test? || Rails.env.development?
deliver_email_verification_instructions!
else
delay.deliver_email_verification_instructions!
end
end
如果您使用三元运算符编写此代码,它将是:
def deliver_email_verification_instructions
(Rails.env.test? || Rails.env.development?) ? deliver_email_verification_instructions! : delay.deliver_email_verification_instructions!
end
是对的吗?如果是这样,那不是更难阅读吗?声明没有else
帮助打破这一点吗?有没有另一种更好的、else
更少的方式来写这个我没有想到的?
我想我在这里寻找风格方面的考虑。