<分区>
在 boolean 计算中严重依赖短路是否是一种好的编码风格?
我认识一个喜欢这样做的人。 例如,如果业务逻辑是“如果爱丽丝不饿或者如果爱丽丝和鲍勃都饿了”,而不是写
// if Alice is not hungry or both alice and bob are hungry
if (!A || A && B)`
他会写
// if Alice is not hungry OR both alice and bob are hungry
if (!A || B)
认为 ||
是短路的,因此当且仅当第一个为 false
时才计算右操作数(这意味着 A =真
).
(恼人的是,乍一看,你会认为这是一个错误,但如果你把它改成更明显的,你会觉得自己看起来很愚蠢!)