2009-03-29 7 views
13

Je cherche des raisons d'utiliser/ne pas l'utiliser et pour des idées originales (dans leur utilisation et pour les remplacer). Opérateur ternaire: mauvaise ou bonne pratique?


double:

connexes (mais ne répond pas à la question posée):

+1

que faire ensuite? utilité de if déclaration? – SilentGhost

+0

Ce n'est pas la même chose. –

+0

Bien sûr, il suffit de remplacer Ternary avec quoi que ce soit. – Samuel

Répondre

4

Il est quelque chose comme la boucle for. Cela a du sens pour ce que ça fait, mais quand vous essayez de coller plus de choses dedans, ça devient illisible.

0

De quel opérateur ternaire parlez-vous?

Un opérateur ternaire est un opérateur qui prend trois arguments.

Si vous parlez du? : opérateur, cela s'appelle l'opérateur conditionnel. Je ne peux plus m'en passer, personnellement. Les instructions If-else me paraissent si compliquées, en particulier lors d'une affectation conditionnelle. Certains se plaignent que cela semble désordonné, mais il est toujours possible (en particulier si vous utilisez Visual Studio ou un autre IDE de formatage intelligent) de rendre les choses facilement lisibles, et vous devriez commenter toutes vos conditions de toute façon.

+3

On l'appelle généralement l'opérateur ternaire car c'est le seul opérateur qui prend trois arguments. – Samuel

+0

Je parle de? : opérateur (je l'ai toujours appelé opérateur ternaire: ai-je tort?) –

+2

+1 pour la précision. Oui, on l'appelle l'opérateur conditionnel. Il se trouve être un opérateur ternaire *, mais cela ne décrit que le nombre d'opérandes, pas son but/comportement. Si l'équipe C# introduit tous un autre opérateur ternaire, les gens vont vraiment devoir apprendre le bon nom ... –

3

L'opérateur ternaire conditionnel peut certainement être surutilisé, et certains le trouvent tout à fait illisible. Cependant, je trouve qu'il peut être très propre dans la plupart des situations qu'une expression booléenne est attendue, à condition que son intention soit claire. Si l'intention est pas effacer, il est préférable d'utiliser une variable temporaire avec un nom clair dont la valeur est affectée à l'aide d'une instruction if, ou d'utiliser une fonction avec un bon nom qui renvoie la valeur attendue.

8

Bon pour les balises courtes dans les langues texturants comme PHP, par exemple:

<form> 
<input type='radio' name='gender' value='m' <?=($gender=='m')?"checked":""?>>Male 
<input type='radio' name='gender' value='f' <?=($gender=='f')?"checked":""?>>Female 
</form> 

Bon pour les interrupteurs en javascript/jQuery:

var el = $("#something"); 
$(el).is(':visible') ? $(el).hide("normal") : $(el).fadeIn("normal"); 

Bon pour l'affectation, en particulier lorsqu'un nom de variable peut prendre différents types:

$var = ($foo->isFoo()) ? 'Success!' : false; 
23

Par souci de lisibilité, je n'utilise que un ternaire s'il correspond à une ligne de 80 char.