2013-08-06 45 views
1

我经常遇到这种情况,我有一个复杂的if语句,其中包含大量内部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; 
    } 
} 

回答

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 } 

可以缩短一点点像这样,也许,我无法想象任何短路...