2 votes

Autre façon d'écrire les conditions If

Je me demandais s'il existait une alternative ou une manière élégante d'écrire les conditions "if", s'il y a

d'autres conditions doivent être vérifiées.

Exemple,

if(cond1){
   if(cond2){
      if(cond3){
         if(cond4){
            //all conditions are checked
             flag = true;
         }
      }
   }
}

9voto

Zong Zheng Li Points 3582

Oui, vous pouvez utiliser l'opérateur logique ET.

if(cond1 && cond2 && cond3 && cond4) {
    flag = true;
}

C'est équivalent en ce sens que si cond1 est faux, les autres conditions ne sont pas évaluées, et ainsi de suite.

Dans ce cas, il peut être encore plus simple d'assigner directement la valeur (inspiré par la réponse originale de Patrick) :

flag = cond1 && cond2 && cond3 && cond4;

3voto

pat34515 Points 1491

Une méthode courte, lisible et élégante serait la suivante :

 flag = cond1 && cond2 && cond3 && cond4 ? true : false;

Ou comme le dit pstanton :

 boolean flag = cond1 && cond2 && cond3 && cond4;

2voto

pstanton Points 8807

Si le moins est le plus, c'est LE plus élégant :

boolean flag = cond1 && cond2 && cond3 && cond4;

1voto

dfb Points 8807

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X