[JAVA] L'opérateur ternaire est-il mauvais?

Lorsque je passais en revue le programme d'un nouveau venu qui a fait ses débuts en tant que membre de la société en tant que programmeur, j'ai brièvement parlé de l'opérateur ternaire, je vais donc le résumer. Pour résumer d'abord, l'opérateur ternaire n'est pas une abréviation de l'instruction if.

PostScript 15/10/2015 Ici, «l'opérateur conditionnel» s'écrit «opérateur ternaire». L'opérateur ternaire est un terme général pour les opérateurs qui ont trois éléments comme son nom l'indique, et ne se réfère pas directement à l'opération "?:", Il était donc plus précis de le décrire ici comme "opérateur conditionnel". Merci bsdhack.

Qu'est-ce qu'un opérateur ternaire?

C'est une opération qui peut changer la valeur à retourner en fonction des conditions.

Format


[conditions] ? [Valeur renvoyée si TRUE] : [Valeur de retour pour FALSE] ;

échantillon


final int MAX = 100;
int ans = 120;

int result = MAX < ans? MAX : ans;
//le résultat est 100

Un exemple est le processus consistant à renvoyer 100 si ans est égal à 100 ou plus, et à renvoyer ans tel quel s'il est égal à 100 ou moins.

Le début de l'affaire

Dans l'exemple ci-dessus, il y avait un code source comme celui-ci.

exemple d'instruction if


int ans = 120;
int result;

if(MAX < ans){
  result = MAX;
}else{
  result = ans;
}

HM. Je ressens la même chose que le processus. Au contraire, j'estime qu'un tel code source est souvent émis pour expliquer l'opérateur ternaire. Alors pourquoi ne pas utiliser l'opérateur ternaire? Quand j'ai entendu cela, il a dit: "On m'a appris à ne pas utiliser l'opérateur ternaire parce que c'est difficile à comprendre." Il est vrai que certaines entreprises et certains projets ont des règles qui interdisent les opérateurs ternaires.

Non, ce serait différent de brancher quoi que ce soit avec if, alors réfléchissons à la façon de l'utiliser correctement.

si "instruction" et "opérateur" ternaire

Lors de l'examen des instructions if et des opérateurs ternaires, la première chose à noter est la différence entre les «instructions» et les «opérateurs». Puisque l'instruction if est une syntaxe de contrôle, elle branche le processus. Par contre, l'opérateur ternaire n'est pas pour le branchement car il est nommé "opérateur".

Je pense qu'il sera clair comment l'utiliser correctement si vous en êtes conscient.

opérateur

Les opérateurs incluent "+" et "<=". Si vous pensez à nouveau au sens

ans = [Objet 1] + [Point 2]

Dans ce cas, l'opérateur "+" a pour fonction de renvoyer la somme des valeurs numériques de l'élément 1 et de l'élément 2.

L'opérateur ternaire est donc

ans = (conditions) ? [Objet 1] : [Point 2]

L'article 1 ou l'article 2 sera retourné, et celui qui sera retourné dépend des conditions. Cela devient la fonction.

Utiliser correctement

L'instruction if est utilisée pour brancher le processus. L'opérateur ternaire est utilisé lors de l'exécution du processus de sélection d'un parmi deux (ou plus).

Dans l'exemple ci-dessus, le processus sélectionne "MAX" ou "tel quel", de sorte que l'opérateur ternaire convient, et par conséquent, il est plus simple et plus court que d'écrire avec une instruction if. Au contraire, utiliser l'opérateur ternaire parce que je veux l'écrire court est un gâchis.

Cause de confusion

On dit que "les opérateurs ternaires ne sont pas lisibles", et je pense que la raison pour laquelle ils ne sont pas appréciés est que le mauvais schéma consistant à utiliser des opérateurs ternaires au lieu d'instructions if est répandu. Si vous écrivez "process" dans l'opérateur ternaire, on vous dira que l'instruction if est correcte.

Résumé

Cet article avait pour but de dire que l'instruction if et l'opérateur ternaire ont en premier lieu des rôles différents. Si vous clarifiez le rôle et l'utilisez correctement, le lecteur pourra comprendre l'intention du code et la lisibilité doit être améliorée. Cependant, je pense que c'est un problème difficile de tracer une ligne entre ce qui est "calcul" et ce qui est "traitement de branche" parce que cela a beaucoup à voir avec le but du programme à créer et le sens du programmeur.

Recommended Posts

L'opérateur ternaire est-il mauvais?
À propos de l'opérateur ternaire
Essayez d'utiliser || au lieu de l'opérateur ternaire
Comment écrivez-vous l'opérateur ternaire (? :)
Opérateur ternaire de référence
Affectation à plusieurs variables avec l'opérateur ternaire
Combien d'opérateurs ternaires sont autorisés en Java
Qu'est-ce qu'un opérateur?
Le fichier de migration est dupliqué
La déclaration While n'est-elle pas mauvaise?
Ceci est le premier message.
Qu'est-ce que la classe BufferedReader?
A quoi sert le constructeur?
Jusqu'à ce que le code soit exécuté
5ème jour de Java
Quelle est la méthode d'initialisation?
Kotlin n'a pas d'opérateur ternaire (opérateur conditionnel)
'% 02d' Quel est le% de% 2?
Contenu d'apprentissage de base Java 3 (opérateur / opérateur ternaire)
Où est le fuseau horaire de Java LocalDateTime.now ()?
Le manuel Biostar est trop intéressant
Ecrire une troisième instruction If qui n'est ni une instruction if ni un opérateur ternaire