59 votes

Quelle est la forme la plus claire: if (! Valeur) ou if (indicateur == valeur)?

Je comprends que c'est une question subjective, donc je m'excuse si il faut le fermer, mais je me sens comme il arrive assez souvent pour me demander si il y a une préférence générale pour une forme sur l'autre.

De toute évidence, la meilleure réponse est "refactoriser le code de sorte que vous n'avez pas besoin de test pour le mensonge", mais parfois il n'y a pas de moyen facile de le faire et le "else" succursale est tout simplement pour continuer le traitement. Ainsi, lorsque vous devez disposer d'un "cas de faux pas" de construire, qui est la préférée de la norme:

L'opérateur not

if(!value)

Ou le test pour de faux

if(value == false)

75voto

KP. Points 8241

if(!value) est plus facile/rapide à suivre. Subjectif comme vous l'avez dit. Tant que vous êtes cohérent, c'est la chose principale.

MODIFIER

Un autre point à ajouter - en omettant le vrai/faux les mots-clés doivent également être (espérons-le) de forcer le programmeur à utiliser au mieux les variables nommées. Bool variables doivent toujours indiquer la signification ou de l'état, notamment:

if(MyWallet.IsEmpty)

Il n'y a aucune raison pour utiliser == false ou == true que c'est redondant. Le ci-dessus est lisible par l'homme immédiatement.

Beaucoup mieux que d'avoir à déchiffrer:

if(MyWallet.EmptyStatus == true) ou quelque chose de ridicule comme ça.

30voto

Charles Bretana Points 59899

Personnellement j'aime

if ((value == false) == true) ...

car cela vérifie que la déclaration value is false est en train de s’évaluer en un booléen vrai ...

et, évidemment, couvrir les deux possibilités ajoute encore plus de clarté,

if ((value == false) == true && (value == false) != false)

<grin/>

et pour ceux d'entre vous qui sont de véritables gloutons pour la clarté, et exigent une lisibilité irréfutable, je suggère

if (((value == false) == true && (value == false) != false) == true)

23voto

Kevin Points 57797
if(!value)

C'est toujours plus clair à mon avis.

if(value == false)

Je déteste dire cela, parce qu'il semble un peu de la moyenne, mais cela montre que la personne qui écrit le code n'a pas vraiment de comprendre l'utilisation de valeurs booléennes. Vous n'avez pas besoin de valider à nouveau ce qu'est un booléen dans une instruction if. C'est redondant.

(Personnellement, je serais gêné à la personne trop si ils ont nommé la variable value au lieu de quelque chose de plus significatif. J'ai le sentiment que ce que vous avez posté est juste pseudo code, je serais certainement ding que sur un examen.)

Modifier (en réponse à un commentaire ci-dessous):

Il peut sembler trivial, mais c'est souvent un signe de beaucoup plus de choses. Honnêtement, la plupart des gens qui ne l'utilisent var == true etc. ne pas comprendre. C'est juste un fait. Je ne dis pas que leurs stupides ou ils ne devraient pas être les programmeurs juste qu'il y a probablement quelque chose qu'ils ont besoin de revoir et d'apprendre. Le problème est que lorsque la logique devient beaucoup plus complexe, de ne pas comprendre des concepts tels que cela peut conduire à beaucoup plus de problèmes sur la route. Certaines personnes disent que "c'est un style." C'est très bien. La vraie question dans ce cas est, "Comment est-il avantageux pour moi de faire de cette façon? Que dois-je (ou d'autres personnes en tirer?" Si vous ne pouvez pas solidement répondre à cette question, alors vous devez vous demander "Pourquoi est-ce une bonne idée?"

13voto

Bill the Lizard Points 147311

Je n'utiliserais jamais if(value == true) , donc juste pour la cohérence, je n'utiliserais pas non plus if(value != false) .

13voto

Claudio Redi Points 34297

if(!value) est plus clair et plus "élégant", surtout si vous nommez correctement les variables booléennes

  • est ce que
  • aQue ce soit
  • etc

Quelque chose comme

 if (Page.IsPostback == true)
 

me semble redondant

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