CodeGym /Blog Java /Random-FR /Opérateur ternaire
Auteur
Vasyl Malik
Senior Java Developer at CodeGym

Opérateur ternaire

Publié dans le groupe Random-FR
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 . Opérateur ternaire - 1Ternaire signifie « composé de trois parties ». C'est une alternative à l' if-elseinstruction 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 Personclasse et vérifions cela à l'aide d'une if-elseinstruction :

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 usherResponsese 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 !" )
Tout d'abord, nous écrivons la condition, suivie d'un point d'interrogation.

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 Opérateur ternaire - 2 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:

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-elseinstruction 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). 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 deif-elsedé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-elsedé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.
Ici, il est clairement préférable d'utiliser 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. Opérateur ternaire - 4Il rassemble les meilleures pratiques et recommandations pour les programmeurs, qui vous aideront à écrire du code non seulement fonctionnel, mais aussi facilement lisible.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION