JavaRush /Blog Java /Random-FR /Opérateur ternaire en Java

Opérateur ternaire en Java

Publié dans le groupe Random-FR
Bonjour! La conférence d'aujourd'hui ne sera pas très longue, mais certainement utile :) Nous parlerons de ce qu'on appelle l' opérateur ternaire . Opérateur ternaire - 1« Ternaire » signifie « triple ». Il s'agit d'une alternative à l'opérateur conditionnel if-elseque vous connaissez déjà. Donnons un exemple. Disons qu'une personne décide d'aller au cinéma pour voir un film classé 18+. Le gardien vérifie son âge à l'entrée : s'il atteint la limite d'âge, il l'autorise à entrer dans la salle ; sinon, il le renvoie chez lui. Créons une classe Manet vérifions-la avecif-else :
public class Man {

   private int age;

   public Man(int age) {
       this.age = age;
   }

   public int getAge() {
       return age;
   }

   public void setAge(int age) {
       this.age = age;
   }

   public static void main(String[] args) {

       Man man = new Man(22);

       String securityAnswer;

       if (man.getAge() >= 18) {
           securityAnswer = "It's all right, come in!";
       } else {
           securityAnswer = "This movie is not suitable for your age!";
       }

       System.out.println(securityAnswer);

   }
}
Sortie de la console :

"Все в порядке, проходите!"
Si nous supprimons la sortie vers la console, notre test ressemble à ceci :
if (man.getAge() >= 18) {
           securityAnswer = "It's all right, come in!";
       } else {
           securityAnswer = "This movie is not suitable for your age!";
       }
Ici, en fait, une logique simple fonctionne : une condition est vérifiée (âge >= 18). En fonction de cela, securityAnswerl’une des deux lignes contenant la réponse du gardien est affectée à la variable. De telles situations, « une condition - deux résultats possibles », se produisent très souvent en programmation. Par conséquent, le même opérateur ternaire a été créé pour eux. Avec lui, nous pouvons simplifier notre vérification à une seule ligne de code :
public static void main(String[] args) {

   Man man = new Man(22);

   String securityAnswer = (man.getAge() >= 18) ? "It's all right, come in!" : "This movie is not suitable for your age!";

   System.out.println(securityAnswer);

}
Voilà à quoi ressemble le travail de cet opérateur. On l'appelle ternaire (triple) car 3 composantes participent à son travail :
  • Une condition ( man.getAge() >= 18)
  • Deux issues possibles ( « C'est bon, passe à autre chose ! » et « Ce film n'est pas adapté à ton âge ! » )
Tout d’abord, une condition est écrite dans le code, suivie d’un point d’interrogation.
man.getAge() >= 18 ?
« L’âge de la personne est-il supérieur ou égal à 18 ans ? Voici le premier résultat. Il se déclenche si la condition est renvoyée true, c'est-à-dire si elle est vraie :
String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!"
L'âge de la personne est-il supérieur ou égal à 18 ans ? Si oui, attribuez à la variable securityAnswer la valeur « Tout va bien, entrez ! » . Ceci est suivi de l' :opérateur « », après quoi le deuxième résultat est écrit. Il se déclenche si la condition renvoie false, c'est-à-dire qu'elle est fausse :
String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!" : "This movie is not suitable for your age!";
L'âge de la personne est-il supérieur ou égal à 18 ans ? Si oui, attribuez à la variable securityAnswer la valeur « Tout va bien, entrez ! » . Sinon, attribuez à la variable securityAnswer la valeur « Ce film ne convient pas à votre âge ! » Voilà à quoi ressemble la logique générale de l’opérateur ternaire. condition ? résultat 1 : résultat 2 Opérateur ternaire - 2D'ailleurs, il n'est pas nécessaire de mettre la condition entre parenthèses : nous l'avons fait pour une meilleure lisibilité. Cela fonctionnera sans eux :
public static void main(String[] args) {

   Man man = new Man(22);

   String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!" : "This movie is not suitable for your age!";

   System.out.println(securityAnswer);

}
Que devez-vous utiliser : if-else, ou l'opérateur ternaire ? En termes de performances, il n'y a pas beaucoup de différence. Plus précisément, cela peut exister, mais c'est insignifiant. Ici la question porte plutôt sur la lisibilité de votre code. C’est extrêmement important en programmation : le code que vous écrivez doit non seulement fonctionner correctement, mais aussi être facile à lire. Après tout, il peut être « hérité » d'autres programmeurs, vos collègues ! Et si c'est difficile à comprendre, cela compliquera à la fois leur travail et le vôtre : ils courront vers vous pour des explications toutes les 5 minutes. Une recommandation générale pourrait ressembler à ceci : si la condition est simple et facile à vérifier, vous pouvez utiliser l’opérateur ternaire sans dommage. De cette façon, vous réduirez la quantité de code et le nombre de contrôles if-else, qui sont peut-être déjà nombreux. Mais si la condition est complexe et en plusieurs étapes, il est préférable d'utiliser if-else. Par exemple, dans ce cas, ce serait une mauvaise idée d’utiliser l’opérateur ternaire :
String securityAnswer = (man.getAge() >= 18 && (man.hasTicket() || man.hasCoupon()) && !man.hasChild())  ? "Come in!" : "You can not pass!";
Vous ne comprendrez donc pas immédiatement ce qui se passe ici ! Le code est devenu très difficile à lire. Et tout cela à cause d'une condition difficile :
  • Si une personne a plus ou égal à 18 ans + possède un billet (ou un coupon pour une entrée gratuite) + n'a pas de jeunes enfants avec elle - alors elle peut passer.
  • Si au moins une partie de la condition renvoie false, alors ce n’est pas possible.
C'est là qu'il serait clairement préférable d'utiliser if-else. Oui, notre code serait plus grand, mais il serait bien plus lisible. Et aucun de vos collègues ne se serrera la tête s'il hérite d'un tel code :) Enfin, je peux vous recommander le livre. Dans la conférence, nous avons abordé le sujet de la lisibilité du code. Le livre classique « Clean Code » de Robert Martin lui est dédié. Opérateur ternaire - 3Il contient les meilleures pratiques et recommandations pour les programmeurs qui vous permettront d'écrire du code non seulement fonctionnel, mais également facile à lire. Il y a une critique de ce livre sur JavaRush.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION