如何优化if条件语句((A && B) || (A && B && C))的写法
if条件语句优化方案
原始待优化代码
if ((A && B) || (A && B && C)) { ... }
重要提示:上述判断逻辑绝对不能直接替换为
if ((A && B) || C) { ... },二者逻辑不等价,替换会引入业务逻辑错误。
等价优化结果
根据布尔逻辑的吸收律(对任意布尔值X、Y,X || (X && Y) 与 X 完全等价),把A && B看作整体X、C看作Y,可直接化简为无冗余判断的写法,逻辑和原始代码100%一致:
if (A && B) { ... }
等价性验证
可以通过所有分支场景校验一致性:
- 场景1:A、B均为真值:无论C取真/假,原始代码第一个判断分支已经成立,整体返回真;化简后写法同样返回真,结果一致
- 场景2:A、B至少一个为假值:原始代码第一个判断分支不成立,第二个判断分支因为
A && B已经为假,整个与运算结果必然为假,整体返回假;化简后写法同样返回假,结果一致 - 错误写法
(A && B) || C的差异点:当A、B均为假、C为真时,错误写法会返回真,但原始代码此时无满足的分支,返回假,二者逻辑存在本质差异,不可替换。
内容的提问来源于stack exchange,提问作者Eric J.
相关产品推荐
相关产品推荐

