Warum setzen einige Leute den Wert vor Variable in if-Anweisung?

8

Zum Beispiel, was unterscheidet sich von $ variable === true?

%Vor%     
Chan 27.08.2014, 02:59
quelle

4 Antworten

10

Sie sind gleichwertig.

Einige Programmierer bevorzugen diesen "Yoda-Stil", um das Risiko eines versehentlichen Schreibens zu vermeiden:

%Vor%

, was äquivalent zu

ist %Vor%

, wenn sie schreiben wollten

%Vor%

(wobei if (true = $variable) eher einen offensichtlichen Fehler als einen potenziell subtilen Fehler erzeugen würde).

    
ruakh 27.08.2014, 03:02
quelle
5

Kurze Antwort

Manche Leute tun das, um zu vermeiden, dass sie versehentlich den Zuweisungsoperator ( = ) verwenden, wenn sie wirklich einen Vergleichsoperator verwenden wollten ( == oder === ).

Lange Antwort

In PHP gibt es 3 Operatoren, die miteinander verwechselt werden können:

  • = ist der Zuweisungsoperator
  • == ist der "gleich" Operator
  • === ist der Operator "identisch mit"

Der erste Operator wird nur verwendet, um einer Variablen einen Wert zuzuweisen. Die zweite und dritte werden nur verwendet, um zwei Werte oder Ausdrücke miteinander zu vergleichen.

In PHP ist es möglich, einer Variablen innerhalb von Kontrollstrukturen einen Wert zuzuordnen ( if , for , while usw.). Dies kann zu Problemen führen, wenn Sie nicht vorsichtig sind. Wenn Sie beispielsweise $a mit einem booleschen Wert vergleichen möchten, können Sie das folgendermaßen tun:

%Vor%

Wenn Sie jedoch nicht aufpassen, kann es so enden:

%Vor%

... das ist absolut legaler Code, aber es ist eine Aufgabe und wird schließlich Probleme verursachen. Der Grund dafür ist, dass der Ausdruck $a=false ausgewertet wird und der Code weiterläuft, als ob nichts falsch wäre, obwohl dies eigentlich nicht beabsichtigt war.

Der Grund, warum einige Leute die Operanden wechseln, wenn sie einen Wert mit einem Literal vergleichen (fester Wert wie true , false , 7 , 5.2 usw.), liegt daran, dass dies nicht der Fall ist Es ist möglich, einem Literal einen Wert zuzuweisen. Zum Beispiel:

%Vor%

... führt zu einem Fehler, der dem Programmierer sagt, dass er einen Fehler gemacht hat, den er dann beheben kann.

    
Sverri M. Olsen 27.08.2014 03:42
quelle
2

Ich denke, das ist nur die Art zu denken im Allgemeinen. Wenn Sie wirklich an eine tiefe if-Aussage denken, denken Sie, wenn diese Aussage wahr ist, nicht die andere Sichtweise. Es ist nicht falsch, aber in meinem Kopf, der es invers nennt, würde mich nerven und mich die Konzentration über die Aussage verlieren lassen. Ich würde sagen, es ist nur die Art, wie die Leute denken: D.

    
Radu Vlad 27.08.2014 03:15
quelle
1

Es besteht kein Unterschied zwischen ($var === true) und (true === $var) . Sie sind gleichwertig.

Siehe Ссылка für eine vollständige Vergleichstabelle. Sie werden sehen, dass alle äquivalenten Vergleiche dasselbe Ergebnis haben.

    
worldofjr 27.08.2014 03:05
quelle

Tags und Links