75 votes

Quel style de codage utilisez-vous pour l'opérateur ternaire?

Je le garde en ligne unique, si elle est courte. Dernièrement, j'ai été en utilisant ce style pour plus imbriquée ou opérateur ternaire expressions. Un exemple artificiel:

$value = ( $a == $b ) 
            ? 'true value # 1'
            : ( $a == $c )
                ? 'true value # 2'
                : 'false value';

Personnellement, le style que vous utilisez, ou trouver la plus lisible?

Edit: (lors d'un ternaire-opérateur)

En général, j'évite d'utiliser plus de 2 niveaux de profondeur opérateur ternaire. J'ai tendance à préférer 2 niveaux de profondeur opérateur ternaire sur 2 niveau si-sinon, quand je suis en écho à des variables de template PHP scripts.

107voto

Simon Howard Points 5392

L’opérateur ternaire est généralement à éviter, mais cette forme peut être très lisible:

   result = (foo == bar)  ? result1 :
           (foo == baz)  ? result2 :
           (foo == qux)  ? result3 :
           (foo == quux) ? result4 : 
                           fail_result;
 

De cette façon, la condition et le résultat sont maintenus ensemble sur la même ligne, et il est assez facile de survoler et de comprendre ce qui se passe.

84voto

Tomalak Points 150423

J'essaie de ne pas utiliser d'opérateur ternaire pour écrire des conditions imbriquées. Cela défie la lisibilité et n'apporte aucune valeur supplémentaire à l'utilisation d'un conditionnel.

Seulement si cela peut tenir sur une seule ligne et que sa signification est claire comme du cristal, je l'utilise:

 $value = ($a < 0) ? 'minus' : 'plus';
 

25voto

biozinc Points 2760

Personnellement, je n’utilise l’opérateur ternaire que s’il s’intègre sur une seule ligne. Si le besoin se fait sentir, alors c'est le bon vieux

 if else if else
 

17voto

Chris Jacob Points 4211

PHP imbriquée ternaire opérateurs se comportent différemment.

Cette syntaxe passe tous les tests suivants. Basé sur http://deadlytechnology.com/web-development-tips/php-ternary-syntax/

$myvar = ($x == $y)
?(($x == $z)?'both':'foo')
:(($x == $z)?'bar':'none');

.

Voir: http://au.php.net/ternary

Exemple #3 "Non évidente Ternaire des Comportements", explique pourquoi le code suivant ne fonctionne pas en PHP.

$x = 1;
$y = 2;
$z = 3;   
$myvar = ($x == $y) 
       ? "foo" 
       : ($x == $z) 
         ? "bar" 
         : "none";  
$myvar == 'none'; // Good

$x = 1;
$y = 2;
$z = 1;   
$myvar = ($x == $y) ? "foo" : ($x == $z) ? "bar" : "none";  
$myvar == 'bar'; // Good

$x = 1;
$y = 1;
$z = 3;   
$myvar = ($x == $y) ? "foo" : ($x == $z) ? "bar" : "none";  
$myvar == 'bar'; // Bad!

$x = 1;
$y = 1;
$z = 1;   
$myvar = ($x == $y) ? "foo" : ($x == $z) ? "bar" : "none";  
$myvar == 'bar'; // Bad!

13voto

Rick Kierner Points 504

Les opérateurs ternaires sont des moyens rapides et efficaces d’écrire des déclarations simples si. Ils ne doivent pas être imbriqués ou difficiles à lire. Rappelez-vous: vous écrivez le logiciel une fois mais il est lu 100 fois. Il devrait être plus facile à lire qu'à écrire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X