我经常要做这样的事情,
if(condition1) {
if {condition2) { //this condition is repeated again below
//dosomething here 1 code 1
}
else{
//dosomething here 2 code 2
}
}
else {
if {condition2) { //same if condition as above
//dosomething here 3 code 3
}
else{
//dosomething here 4 code 4
}
}
基本上,在两种情况下只检查if(condition2)是否重复,并且dosomething在所有4个地方都不同,即code1,code2,code3,code4都是不同的代码。
那么,无论如何都要使它紧凑和可读或者这很好吗?
感谢。
经过编辑并查看答案后,我现在想知道这个问题是否有意义。我现在觉得很蠢。
答案 0 :(得分:5)
对于您的具体情况,最好的选择是:
不再适用 - 适用于此处dosomething 1与dosomething相同的情况3
if ( c2 )
{
}
else if ( c1 )
{
}
else
{
}
对于不太简单的情况,您可以将条件组合在一起:
if ( c1 && c2 )
{
}
else if ( c1 && !c2 )
{
}
else if ( !c1 && c2 )
{
}
else if ( !c1 && !c2 )
{
}
虽然我不知道这是否更具可读性。
如果需要更多条件,我会看到这样的代码:
do {
if (c1)
{
//....
break;
}
if (c2)
{
//....
break;
}
//.....
} while (false);
答案 1 :(得分:3)
作为编辑问题的新答案
if ( condition1 && condition2 )
{
//dosomething here 1 code 1
}
else if ( condition1 && !condition2 )
{
//dosomething here 2 code 2
}
else if ( !condition1 && condition2 )
{
//dosomething here 3 code 3
}
else
{
//dosomething here 4 code 4
}
随着问题的改变,以下代码不再有效!
我愿意:
if(condition2)
{
if(condition1)
{
//dosomething here
}
else
{
//dosomething here 2,
//which might be different than what we are doing above
}
}
这是针对您的具体问题,对于更复杂的问题,解决方案可能会有所不同