2012-11-04 3 views
1

L'un est-il plus lisible que l'autre? Au début, je n'aimais pas l'approche false === mais comme je le vois de plus en plus souvent, je me réchauffe. Je suis sûr qu'ils retournent des résultats identiques.

+0

Je suppose que c'est comme dire que si 'x = y' alors' y = x' – JCOC611

+5

Le second est plus facile de mal de type comme une affectation sans provoquer d'erreur –

+1

http://wiert.me/2010/05/25/yoda-conditions-from-stackoverflow-new-programming-jargon-you-coined/ – Dogbert

Répondre

6

Je préfère grandement

false === $var 

Soit parce que parfois vous n'utilisez que l'égalité et ne cherchez pas d'identité.

Dans ce cas, vous écrivez

false == $var 

Mais parfois, vous n'êtes pas au sommet de votre jeu, et pourrait écrire

false = $var 

qui donnera une erreur immédiate, et nous allons vous fixer tout de suite.

Cependant, si vous tapez

$var = false 

vous finissez par battre la tête contre un mur pendant une heure à essayer de comprendre pourquoi votre script ne fonctionne pas correctement.

+0

L'utilisation d'un IDE décent corrige cet argument. –

+0

Le code doit être accessible indépendamment de l'IDE –

7

Il n'y a absolument aucune différence fonctionnelle.

Je préfère habituellement placer la première variable et la valeur constante seconde. Parce que cela fait sens (Lorsque vous parlez à haute voix, diriez-vous « je teste que la variable est faux »? Ou « je teste que le faux est égal à la variable »?)

+1

+1, j'aime votre vision du «code aussi fort que cela sonne fort» –

+0

Les IDE modernes vous alerteront si vous utilisez une affectation dans une instruction if, donc le seul cas d'utilisation pour mettre la constante en premier diminue rapidement. – Sven

+0

Cela dépend si vous êtes un fan de Star Wars: "si faux est la valeur ..." –

3

Un ingénieur logiciel bien meilleur que moi m'a appris à ce sujet. Longue histoire courte, en plaçant la première constante est une bonne pratique, même si elle peut sembler étrange au premier abord. Je dis que c'est une bonne pratique car il se traduit par les résultats les plus prévisibles:

$var = null; 

if (false === $var) { // NullPointerException is not thrown; only evaluates to "true" if the value "false" was assigned to $var 
    ... 
} 

if ($var === false { // NullPointerException will be thrown 
    ... 
} 

if (false = $var) {  // Parse Error 
    ... 
} 

if ($var = false) {  // the value false is assigned to $var 
    ... 
} 
+1

Nous parlons de PHP, il n'y a pas d'exception NullPointer. – Sven

+0

Mais le concept s'applique toujours. –

Questions connexes