YODA Conditions

Yoda dreht bekanntlich gern Satzbestandteile um. Das hat jetzt noch nichts direkt mit PHP zu tun. Zäumen wir das Pferd mal andersherum auf. Was fällt hier auf?

function doSomething()
{
    return false;
}

$res = doSomething();

if ($res = false)
{
    echo "1";
}
else
{
    echo "2";
}

Der geübte Debugger sieht sofort: Im if haben wir eine Zuweisung und keinen Vergleich. PHP findet das voll okay, IDEs geben in der Regel einen Warnhinweis. Raus kommt im Übrigen 2.

Was wäre jetzt, wenn wir frei nach Yoda geschrieben hätten:

if (false = $res)
{
    echo "1";
}
else
{
    echo "2";
}

Parse error: syntax error, unexpected ‚=‘. Wunderbar! Man kann einer Konstanten (wie false) keinen Wert zuweisen, was wir hier auf Grund unseres Tippfehlers (nur ein =) versucht hätten. Ist letztendlich eine Gewöhungssache. Wenn man QM-Tools wie den PHP Code Sniffer verwendet, fliegt solch ein Fehler sowieso auf, zudem hat man ja durch TDD ohnehin keine Fehler im Code, gell ;).

Besonders umdenken muss ich bei einer Verknüpfung von mehreren Ausdrücken im if oder > und <. Beispiel?

if (4 <= $var && 10 >= $var) {}

vs.

if ($var >= 4 && $var <= 10) {}

Beide Vergleiche sind vollständig äquivalent, jedoch komme ich – gewohnheitsbedingt – mit dem zweiten wesentlich besser hin.

Bildquelle

yoda

Bildquelle

Weitere Posts:

Dieser Beitrag wurde unter php, Quicktips, webdev veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Eine Antwort auf YODA Conditions

  1. mark sagt:

    IMO: Yoda macht nie Sinn.
    Eine ganz schlechte Idee (wenn auch mit guten Intensionen) mit der die damals mal angefangen haben. Gut dass die meisten Frameworks das nicht aufgenommen haben.
    Siehe
    http://www.dereuromark.de/2015/10/15/avoid-yoda-conditions/
    Wir sind also einer Meinung :)

    LG mark

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.