如何更好地组织这两个连续的 IF 语句?
Posted
技术标签:
【中文标题】如何更好地组织这两个连续的 IF 语句?【英文标题】:How can I organize better these two consecutive IF statements? 【发布时间】:2011-10-15 23:50:49 【问题描述】:我想更好地组织以下两个if
语句:
if(A || B)
do stuff...
if(A && ! B)
do other stuff...
有没有更好的办法?
编辑:!
在第二个语句之前B
,对不起...
【问题讨论】:
当 A&&B 也为真时,A||B 将评估为真。这是你想要的行为吗? 不幸的是我忘记了!第二个 IF 语句的 B 之前的运算符。我现在已经编辑了问题。 【参考方案1】:if( A || B )
do some stuff;
if( !B )
do other stuff;
但好处取决于使用情况,这个版本可能更难理解。
【讨论】:
终于有人明白了,以为我看不到优势:) +1 @Ziyao,是的,我也是,刚刚回答了这个问题:D 现在的优势是代码的性能更好,因为我避免了对 A 的评估。不仅简化了代码,避免了第二次输入任意复杂的 A 表达式。缺点是我获得了额外的嵌套级别。 @francesco,性能优势为零,因为优化器无论如何都会采取不同的方式,当代码变得更难理解时,第二次输入A
不是问题。可读性应该是最重要的问题,真的。【参考方案2】:
对于第二个条件是 A && B 的原始问题,我的答案是:
如果没有别的,您可以将第二个块嵌套在第一个块中,以防止在第一个条件失败时进行不必要的评估。否则,我看不出有什么好的方法来缩短它......并且嵌套假定第一个块中的代码不会更新 A 和 B,它可能会。
对于新问题,我的答案是在第一个检查 !B 的块中嵌入一个块,并省略第二个块。这相当于为新问题提供的另一个答案。
【讨论】:
我的答案不再相关,因为 OP 改变了问题。 那不如编辑或删除,而不是添加评论。以上是关于如何更好地组织这两个连续的 IF 语句?的主要内容,如果未能解决你的问题,请参考以下文章