一种简化这些if语句的方法

时间:2013-08-06 18:44:50

标签: logic

我经常遇到这种情况,我有一个复杂的if语句,包含很多内部if语句和大量重复代码。它本质上归结为我有一堆案例和某些基于这些语句执行的代码块,但如果一个不同的条件为真,那么我希望这些代码块在不同的条件下执行。这是一个通用的例子:

if (condition) {
    if (conditionA) {
        codeBlockW;
    }
    else if (conditionB) {
        codeBlockX;
    }
    else if (conditionC) {
        codeBlockY;
    }
    else if (conditionD) {
        codeBlockZ;
    }
}
else {
    if (conditionA) {
        codeBlockZ;
    }
    else if (conditionB) {
        codeBlockY;
    }
    else if (conditionC) {
        codeBlockX;
    }
    else if (conditionD) {
        codeBlockW;
    }
}

1 个答案:

答案 0 :(得分:0)

if ((condition AND conditionA) OR (!condition AND conditionD)) { codeBlockW }
else if ((condition AND conditionB) OR (!condition AND conditionC)) { codeBlockX }
else if ((condition AND conditionC) OR (!condition AND conditionB)) { codeBlockY }
else if ((condition AND conditionD) OR (!condition AND conditionA)) { codeBlockZ }

你可以稍微缩短它,也许,我没想到任何更短的方式...