On peut voir les opérateurs ternaires comme une version compacte d'un if-else. On les utilise généralement dans les instructions de retour (mais pas uniquement) : une seule ligne suffit pour prendre la décision, en renvoyant la valeur de gauche si l'expression vaut true et celle de droite si elle vaut false.
Un grand nombre d'expressions if/else simples peuvent être simplifiées grâce aux opérateurs ternaires.
// this ternary statement
return 5 > 4 ? true : false;
// is equivalent to this if/else
if ( 5 > 4 ) {
return true;
} else {
return false;
}
Alors, comment choisir entre if-else et ternaire ? Eh bien, les opérateurs ternaires s'emploient dans des cas simples, où il suffit de renvoyer une valeur selon une condition, sans calcul supplémentaire. Utilise un if-else pour tout le reste : conditions imbriquées, expressions complexes, ou quand il faut plus d'une ligne pour déterminer la valeur de retour.
Même s'il est possible d'imbriquer des opérateurs ternaires, le code devient souvent difficile à lire.
Dans ce cas, il vaut mieux imbriquer des if.
// hard to read
int value = expr1 ? expr2 && expr3 ? val1 : (val2 + val3) : expr4;
// easier to read
if (expr1){
if (expr2 && expr3){
return val1;
}
return val2 + val3;
}
return val4;
Les opérateurs ternaires et les instructions if/else illustrent bien le fait qu'en programmation, on peut arriver au même résultat de plusieurs façons.