PHP Coding Standard |
Um Arbeit zu sparen werden manchmal Klammern nicht gesetzt. Der PHP Parser verlangt dies auch nicht, trotzdem kann diese Faulheit ganz üble Folgen haben. Also muss jede Kontrollstruktur einen Block haben, der von geschweiften Klammern umschlossen wird. Die Ausnahme bilden SWITCH-CASE Strukturen, wo ein "case:" mehrere Anweisungen enthalten kann und dann mit einem "break;" abgeschlossen wird.
// No block at all - No! while ($row = mysql_fetch_assoc($result)); echo 'WHILE is finished!'; // looks the same, doesn't it? while ($row = mysql_fetch_assoc($result)) echo 'WHILE is finished!';
Die Beispiele sind syntaktisch richtig, aber das Semikolon hinter dem ersten WHILE ist leicht zu übersehen. Eine Kontrollstruktur zu programmieren, die keinen Block benötigt, ist vielleicht möglich, aber so sollte nicht programmiert werden. Es ist hier besser einen leeren Block hinter die WHILE-Schleife zu platzieren.
while ($row = mysql_fetch_assoc($result)) { // empty } echo 'WHILE is finished!';
Hier wird sofort ersichtlich, dass die WHILE-Schleife keine Verarbeitung enthält und nur die Datensätze der Datenbank durchlaufen werden. Wenn es irgendwie geht, sollte man solche leeren Blöcke vermeiden.
Zitat aus den "phpBB Coding Guidelines" |
Always include the braces:
This is another case of being too lazy to type 2 extra characters causing problems with code clarity. Even if the body of some construct is only one line long, do not drop the braces. Just don't, (..) |
Auch die "phpBB Coding Guidelines" verbieten es, die Klammern um Blöcke wegzulassen. Es passiert einfach zu schnell, dass man beim Überfliegen von Code etwas übersieht, wenn die Zeile nicht richtig eingerückt ist oder die Klammern fehlen.
if (15 > 9) $boolean = TRUE; else $boolean = FALSE;
Die untenstehende Version mit Klammern hat den Vorteil, dass man weitere Anweisungen hinzufügen kann. Wenn man sich ganz sicher ist, dass nie weitere Funktionen oder Befehle hinzukommen, kann man auch direkt den Trinitäts-Operator verwenden.
if (15 > 9) { $boolean = TRUE; } else { $boolean = FALSE; } // or simply write: $boolean = (15 > 9);
Diese Empfehlung könnte auch eine Regel sein, aber da die Art und Weise der Klammerseztung umstritten ist, bleibt es eine Empfehlung. Es sei jedem Team jedoch wärmstens ans Herz gelegt, diese Empfehlung nicht zu ignorieren.