Salut! La leçon d'aujourd'hui ne sera pas très longue, mais elle sera certainement utile :) Nous allons parler de l' opérateur dit ternaire .
Ternaire signifie « composé de trois parties ». C'est une alternative à l'
D'ailleurs, les parenthèses autour de la condition ne sont pas nécessaires : nous les avons ajoutées pour plus de lisibilité. Cela fonctionne aussi sans eux:
La recommandation générale est la suivante : si la condition est simple et facilement vérifiable, vous pouvez utiliser l'opérateur ternaire sans danger. Cela vous permet de réduire la quantité de code et le nombre de
Il rassemble les meilleures pratiques et recommandations pour les programmeurs, qui vous aideront à écrire du code non seulement fonctionnel, mais aussi facilement lisible.

if-else
instruction de flux de contrôle que vous avez déjà rencontrée. Donnons un exemple. Supposons que quelqu'un décide d'aller voir un film classé R (moins de 17 ans nécessite un parent accompagnateur ou un tuteur adulte). L'huissier vérifie son âge à la porte : s'il a réussi le contrôle d'âge, il est autorisé à entrer ; sinon, il est renvoyé chez lui. Déclarons une Person
classe et vérifions cela à l'aide d'une if-else
instruction :
public class Person {
private int age;
public Person(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public static void main(String[] args) {
Person person = new Person(22);
String usherResponse;
if (person.getAge() >= 18) {
usherResponse = "Everything is in order. Come in!";
} else {
usherResponse = "This film is not suitable for your age!";
}
System.out.println(usherResponse);
}
}
Sortie console :
"Everything is in order. Come in!"
Si nous supprimons la sortie de la console, notre vérification ressemble à ceci :
if (person.getAge() >= 18) {
usherResponse = "Everything is in order. Come in!";
} else {
usherResponse = "This film is not suitable for your age!";
}
La logique est très simple ici : une condition est vérifiée (âge >= 18) En fonction du résultat, la variable usherResponse
se voit attribuer l'une des deux chaînes avec la réponse de l'huissier. De telles situations ("une condition - deux résultats possibles") sont extrêmement courantes dans la programmation. Et c'est pourquoi l'opérateur ternaire a été créé. Nous pouvons l'utiliser pour simplifier notre vérification à une seule ligne de code :
public static void main(String[] args) {
Person person = new Person(22);
String usherResponse = (person.getAge() > 18) ? "Everything is in order. Come in!" : "This film is not suitable for your age!";
System.out.println(usherResponse);
}
Voici comment fonctionne cet opérateur. C'est ce qu'on appelle l'opérateur ternaire, car il comporte 3 composantes :
- Une condition (
person.getAge() > 18
) - Deux issues possibles ( "Tout est en ordre. Entrez !" et "Ce film n'est pas adapté à votre âge !" )
person.getAge() > 18 ?
« Cette personne a-t-elle plus de 18 ans ? » Ensuite, nous écrivons la première valeur . Cette valeur est utilisée si la condition est évaluée àtrue
:
String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!"
L'âge de cette personne est-il supérieur à 18 ans ? Si oui, définissez la usherResponse
variable sur "Tout est en ordre. Entrez !" Vient ensuite le :
symbole " " et la deuxième valeur . Cette valeur est utilisée si la condition est évaluée àfalse
:
String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!" : "This film is not suitable for your age!";
L'âge de cette personne est-il supérieur à 18 ans ? Si oui, définissez la usherResponse
variable sur "Tout est en ordre. Entrez !" . Sinon, définissez la usherResponse
variable sur "Ce film n'est pas adapté à votre âge !" En général, voici à quoi ressemble la logique de l'opérateur ternaire. condition ? résultat 1 : résultat 2 
public static void main(String[] args) {
Person person = new Person(22);
String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!" : "This film is not suitable for your age!";
System.out.println(usherResponse);
}
Alors, que devez-vous utiliser ? Une if-else
instruction ou l'opérateur ternaire ? En termes de performances, il n'y a aucune différence. Plus précisément, peut-être qu'il y en a, mais c'est insignifiant. La plus grande considération ici est la lisibilité de votre code. Le code que vous écrivez doit non seulement fonctionner correctement, mais aussi être facile à lire . Après tout, il pourrait être "hérité" par d'autres programmeurs, vos collègues ! Si c'est difficile à comprendre, cela compliquera leur travail, et le vôtre (ils accourront toutes les 5 minutes pour vous expliquer). if-else
déclarations (et il y en a peut-être déjà beaucoup). Mais si la condition est complexe et implique plusieurs étapes, il est préférable d'utiliser une if-else
déclaration. Par exemple, utiliser un opérateur ternaire serait une mauvaise idée dans ce cas :
String usherResponse = (person.getAge() > 18 && (person.hasTicket() || person.hasCoupon()) && !person.hasChild()) ? "Come in!" : "You can't come in!";
Ce qui se passe ici n'est pas immédiatement évident ! Le code est devenu très difficile à lire. Et tout cela à cause de la condition complexe:
- Si quelqu'un a plus de 18 ans, a un billet (ou un laissez-passer gratuit) et n'a pas de jeunes enfants, il peut entrer.
- Si ne serait-ce qu'une partie de la condition est fausse, alors il ne peut pas.
if-else
. Oui, notre code sera plus gros, mais il sera beaucoup plus lisible. Et vos collègues n'auront pas la palme s'ils héritent de ce code :) Enfin, je peux vous recommander un bien. Nous avons abordé la lisibilité du code pendant la leçon. Le livre "Clean Code" de Robert Martin, devenu un classique, est consacré à ce sujet. 
GO TO FULL VERSION