„Tu es oder tu es nicht. Es gibt kein Versuchen.“

Star Wars: Das Imperium schlägt zurück.

Was uns Yoda mit diesem Zitat aus Star Wars: Das Imperium schlägt zurück, also aus dem Jahre 1980 sagen möchte, symbolisiert den Zeitgeist einer Generation, welche sich nicht von möglichen Hindernissen abschrecken lässt, sondern stattdessen lösungsorientiert denkt.

Manche Regeln mögen Vertretern dieser Generation daher seltsam erscheinen. Doch die Guideline für WordPress Core Developer hat gleich einige davon zur Hand (vgl. Quellen am Fuß des Beitrags).

Ist man Programmierer, gehört dazu beispielsweise die Regel, dass man um einzeilige Argumente ebenfalls Klammern setzen soll. Das ist nicht zwingend erforderlich, da ein einzeiliger Befehl nach einer Anweisung direkt ausgeführt und vom Interpreter quasi während des Prozesses „eingeklammert“ wird. Sogenannte „single statement inline control structures“ werden nämlich dadurch ausgehebelt; so verhalten sich alle Anweisungen identisch, eine weitere mögliche Fehlerquelle wird ausgemerzt.

Was sind Yoda Conditions?

Eine Yoda Condition wird wie folgt geschrieben:

#Yoda Conditions
if ( true == $the_force ) {
$victorious = you_will( $be );
}

Heruntergebrochen bedeutet es also nichts Anderes als eine Umkehr der Argumente im If-Statement:

if ( 1 == $var) statt if ($var == 1)

Warum sind Yoda Conditions wichtig?

Der Hintergrund liegt darin: Wenn man aus Flüchtigkeit beim Tippen eines Typ-Abgleichs ein „=“ vergisst, erhält man im „normalen Schreibstil“ keinen Fehler, da man die Variable nur auf den Wert abgleicht („==“) aber nicht auch noch auf den Typ, wie es mit dem Befehl „===“ der Fall wäre.

Dreht man nun also die Operatoren um, erhält man unter Verwendung der Yoda Conditions einen Parse Error und stellt somit SEHR schnell fest, dass man einen Fehler im Quelltext hat. Dieser kann anschließend behoben werden. Nutzt man Yoda Conditions nicht, taucht dieser Programmierfehler ggfs. niemals auf.

Ein bisschen bizarr zum Lesen es ist.

Daran gewöhnen Du Dich wirst!

Yoda Conditions bieten sich an für die Operatoren ==, !=, === und !==. Da die Operatoren <, >, <= oder >= deutlich schwieriger zu lesen und im Yoda Stil zu begreifen sind, sollte man diese normal schreiben.

Begründung (Zitat aus dem Codex, engl.):

When doing logical comparisons involving variables, always put the variable on the right side and put constants, literals, or function calls on the left side. If neither side is a variable, the order is not important. (In computer science terms, in comparisons always try to put l-values on the right and r-values on the left.)

In the above example, if you omit an equals sign (admit it, it happens even to the most seasoned of us), you’ll get a parse error, because you can’t assign to a constant like true. If the statement were the other way around ( $the_force = true ), the assignment would be perfectly valid, returning 1, causing the if statement to evaluate to true, and you could be chasing that bug for a while.