【问题标题】:How can I organize better these two consecutive IF statements?如何更好地组织这两个连续的 IF 语句?
【发布时间】: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 之前的运算符。我现在已经编辑了问题。

标签: c if-statement conditional logic boolean-logic


【解决方案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 改变了问题。
  • 那不如编辑或删除,而不是添加评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
  • 2014-03-19
  • 1970-01-01
  • 2019-05-05
  • 1970-01-01
  • 2014-07-21
  • 2023-03-21
相关资源
最近更新 更多