2009-01-07 6 views
6

J'ai trouvé cette déclaration est un vieux code et il m'a fallu une seconde pour comprendre ...Définition d'une valeur booléenne basée sur un nombre entier

IsTestActive = (TestStateID == 1 ? true : false); 

S'il vous plaît me corriger si je me trompe, mais est pas le même que celui-ci ?:

IsTestActive = (TestStateID == 1); 

Si oui, pourquoi voudriez-vous utiliser le premier? Lequel est le plus lisible? (Je pense que ce dernier, mais je voudrais voir ce que les autres pensent.)

Répondre

32

Oui, c'est exactement la même chose.

Oui, ce dernier est plus lisible.

+2

Je n'ai vu l'ancien utilisé par 2 types de personnes: ceux qui manque d'une compréhension fondamentale de la logique booléenne, ou ceux qui pensent que l'opérateur ternaire est vraiment cool. –

+1

Le premier aurait théoriquement un petit coup de perf, mais si vous vous souciez de ce niveau de performance, je suppose que vous avez de plus gros problèmes ... –

5
IsTestActive = (TestStateID == 1); 

est certainement plus facile à lire.

Vous pourrait faire un cas pour définir une constante

ACTIVE = 1 

remplaçant la variable booléenne IsTestActive avec

(TestStateID == ACTIVE) 

La façon dont le code est maintenant, l'état de la IsTestActive booléennes être erroné si l'état de TestStateID change sans mettre à jour le booléen. Contourner le booléen et tester la source réelle de l'information que vous recherchez supprimera la possibilité de cette erreur.

+1

bon point, je déteste les nombres entiers magiques - mais je suppose que l'OP vient de poster un exemple code – annakata

+0

Cela peut être, mais je vois beaucoup de gens qui utilisent des variables temporaires comme celle-ci dans le code de production. –

0

La lisibilité dépend de l'endroit où vous utilisez cette construction. Je trouve souvent quelque chose comme

(TestStateID == 1 ? true : false) 

plus lisible.

0

Eh bien, je ne sais pas d'autres langues, mais en PHP, il est encore plus facile, en utilisant le type de coulée:

$IsTestActive = (boolean)$TestStateId; 
Questions connexes