Comme l'indique ZongLi, il est facile de réduire cela à une série de ET, mais cela devient plus complexe lorsque vous avez une logique complexe.
if(cond1){
if(cond2){
if(cond3){
if(cond4){
//all conditions are checked
flag = true;
}
}
if(cond4){
flag3 = true;
}
}
else
flag2 = true;
}
Dans ce cas, il n'est pas aussi simple de réduire les coûts.
flag1 = cond1 && cond2 && cond3 && cond4
flag2 = cond1 && cond2 && cond4
flag2 = cond1 && !cond2
Cependant, la réduction de ces variables à leurs expressions booléennes rend souvent les choses moins lisibles et moins faciles à maintenir, car la relation sémantique entre les variables est perdue. L'exemple ci-dessus pourrait être réécrit comme suit
if(cond1){
if(cond2){
if(cond4){
flag3 = true;
if(cond3){
flag = true;
}
}
}
else
flag2 = true;
}
o
if(cond1 && cond2){
if(cond4){
flag3 = true;
if(cond3){
flag = true;
}
}
}
else if(cond1){ flag2 = true; }
La meilleure solution dépend de la sémantique de votre code, mais si vous avez beaucoup d'imbrications, vous feriez mieux d'utiliser des expressions booléennes ou de restructurer votre arbre conditionnel.
Il est utile de garder à l'esprit les équivalences logiques booléennes, en particulier le fait que IF x THEN y
est logiquement équivalent à !X or Y