写下列条件的最有效方法是什么?

时间:2016-06-06 12:10:28

标签: if-statement optimization

我有一些看起来像这样的代码:

if (a == 0 or b == 0) {
    if (c == true) {
        return 0
    else if (a == 0)
        a = 1
        c = true
    else if (b == 0)
        b = 1
        c = true
    }
}

编写此代码的最有效方法是什么,而无需再次检查a或b中的哪一个等于0?这可能已经回答了,但我不知道人们会怎么问这个问题。

2 个答案:

答案 0 :(得分:1)

您可以尝试压缩并删除一些不必要的if/else块:

if ((a == 0 && c == true) || (b == 0 && c == true)) {
  // Since we return here, we don't need the if/else blocks after this
  return 0;
}

if (a == 0) {
  a = 1;
} else if (b == 0) {
  b = 1;
}

// If we reach this point, c is always true regardless of a or b
c = true;

但总的来说,代码的效率几乎保持不变,因此您可能也想考虑可读性。

答案 1 :(得分:0)

你绝对不需要最后if(b == 0)

if (a == 0 or b == 0) {
    if (c == true) {
        return 0
    else if (a == 0)
        a = 1
        c = true
    else
        b = 1
        c = true
    }
}