De plus, l'opérateur ternaire permet une forme de paramètre "optionnel". Java n'autorise pas les paramètres facultatifs dans les signatures de méthodes, mais l'opérateur ternaire vous permet d'intégrer facilement un choix par défaut dans les cas suivants null
est fourni pour une valeur de paramètre.
Par exemple :
public void myMethod(int par1, String optionalPar2) {
String par2 = ((optionalPar2 == null) ? getDefaultString() : optionalPar2)
.trim()
.toUpperCase(getDefaultLocale());
}
Dans l'exemple ci-dessus, passer null
comme le String
vous obtenez une valeur de chaîne par défaut au lieu d'une valeur de type NullPointerException
. C'est court et agréable et, je dirais, très lisible. De plus, comme cela a été souligné, au niveau du code octet, il n'y a pas vraiment de différence entre l'opérateur ternaire et l'opérateur if-then-else. Comme dans l'exemple ci-dessus, la décision de choisir l'un ou l'autre repose entièrement sur la lisibilité.
De plus, ce modèle vous permet de faire le String
vraiment facultatif (s'il est jugé utile de le faire) en surchargeant la méthode comme suit :
public void myMethod(int par1) {
return myMethod(par1, null);
}
4 votes
Cela n'a pas d'importance et vous devriez plutôt vous préoccuper de la propreté du code que des performances. Dans ce cas, je pense que l'opérateur ternaire est simplement plus propre.
3 votes
Aussi, vous pouvez le faire comme ceci
if(i == 0) a = 10; else a = 5;
17 votes
L'optimisation prématurée sans profilage montrant un besoin précis est mauvaise, mauvaise, mauvaise. Utilisez le code que votre futur moi comprendra le mieux dans 6 mois.
2 votes
Je suis d'accord avec @Niklas, mais si vous vraiment si vous n'aimez pas l'opérateur ternaire et que vous ne vous souciez pas des différences de performances vraiment triviales, vous pourriez initialiser la variable à la valeur par défaut (vraisemblablement 5), et n'utiliser qu'un "if" sans "else" pour la réaffecter.
5 votes
@Hovercraft : Vous-même et vos collègues, on est tenté d'ajouter ici.
0 votes
Il existe quelques rares cas où l'opérateur ternaire compile une séquence de code sans branches. Mais dans la plupart des cas, il n'y a pas de différence de performance (ou si c'est le cas, elle est négligeable). Utilisez ce qui est le plus facile à comprendre et ce qui rend la logique de votre programme plus claire.
1 votes
IMHO l'opérateur ternaire est horrible !