2013-09-23 4 views
1

Я пытаюсь реализовать эту логику, мне просто интересно, есть ли лучший способ?Как я могу реализовать эту логику лучше

if(condition1) { 
    do1(); 
} 
else if(condition2) {//especially here that I have to check condition3 here and also in the last else if 
    do2(); 
    if(condition3) { 
     do3(); 
    } 
} 
else if(condition3) { 
    do3(); 
} 
+0

are condition2 и condition3 взаимно исключая? – Bathsheba

+0

@ Батшеба Нет, они могут возникать одновременно – Sam

+0

Можете ли вы разместить какое-то фактическое состояние там. –

ответ

2
if(condition1) { 
    do1(); 
} 
else { 
    if(condition2) { 
     do2(); 
    } 
    if(condition3) { 
     do3(); 
    } 
} 
5

Попробуйте

if(condition1) 
{ 
    do1(); 
} 
else 
{ 
    if(condition2) 
    { 
     do2(); 
    } 
    if(condition3) 
    { 
    do3(); 
    } 
} 
1

В вашей логике, я не понимаю, как вы можете сделать улучшения. Может быть, другой, ясный способ, чтобы написать было бы поставить condition2 и condition3 в том же else блоке, так как condition2 и condition3 не являются взаимоисключающими, как они с condition1:

if(condition1) { 
    do1(); 
} 
else { 
    if(condition2) { 
     do2(); 
    } 
    if(condition3) { 
     do3(); 
    } 
} 
2

Когда дело доходит до логических сравнений , как правило, лучшим правилом для применения является сделать код наиболее читаемым возможным в отношении условий. Не пытайтесь быть слишком умным, чтобы будущий читатель задумывался о том, чего пытается достичь код.

Напишите свой код, чтобы он был понятным и не самым коротким в сравнении.

В соответствии с вашими условиями решения, которые вы написали, могут быть наиболее понятными. Если это так, вы должны держать его как есть, а не делать его на самом деле более сложным.

Смежные вопросы