PHP Coding Standard

Logo: PHP
11. Regel 8: Alle Bezeichner werden aussagekräftig und eindeutig definiert

In einem Programm können viele Bezeichner/Namen definiert werden. Jede Variable (Funktion, Konstante, etc.) braucht einen Bezeichner. Diese Bezeichner müssen aussagekräftig und eindeutig definiert werden. Sie sollten nicht zu lang sein, aber auch nicht so kurz, dass die Bedeutung der Variable unklar ist.

In jedem (guten) Programmierkurs lernen Sie sprechende Variablen zu verwenden. Sprechende Variablen sagen etwas über den Inhalt und die Verwendung aus. Bezeichner aussagekräftig zu definieren ist dafür eine globale Umschreibung.

Zitat aus "Einführung in Perl" von Randal L. Schwartz, Tom Phoenix und brian d foy, Seite 30
In der Regel sollten Sie Variablennamen so wählen, dass sie etwas über den Zweck der Variablen aussagen. $r ist wahrscheinlich nicht so aussagekräftig wie $zeilen_laenge. (...) Ebenso können richtig platzierte Unterstriche das Lesen und Verstehen eines Variablennamens erleichtern, besonders dann, wenn der Programmierer, der Ihre Programme pflegen soll, einen anderen sprachlichen Hintergrund hat als Sie.

Beispiel: Sie programmieren Auswertungen (englisch: reports) über den Zugriff auf einen Bankautomat. Dazu benutzen Sie in Ihrer Funktion die PHP-Funktionen mysql_query und mysql_num_rows. Sie könnten die Funktion "rep_mq_mnr()" nennen. Das steht für "report_mysql_query_mysql_num_rows". Ein sehr schlechter Name für die Funktion.

  1. Keine Abkürzungen verwenden, die niemand kennt.
  2. Beide Versionen des Namens sagen nichts über die Funktionalität, den Sinn und Zweck und die Arbeitsweise der Funktion aus.

Erzeugt die Funktion Grafiken? Dann wäre der Name "create_graphics()" sinnvoll. Oder das Ergebnis von "mysql_num_rows()" enthält alle Bankautomat-Logins des heutigen Tages, dann wäre "check_all_logins_for_today()" oder auch "get_logins_today()" eine gültige Bezeichnung. Die zweite Variante könnte schon wieder unklar sein, denn die Übersetzung könnte auch lauten: "Hole dir heute die Logins."

Einen Namen eindeutig zu vergeben bedeutet zum Beispiel:

Ob man die Abkürzung "IO" für "Input/Output" als bekannt voraussetzen kann, muss im Zweifelsfall das Team entscheiden - zu Abkürzungen später mehr.

Erneut kann ich einen Fall aus der Praxis erzählen. Ein Kollege von mir definierte die Funktion "a()". Diese Funktion gab mit echo die Zeichen "<br />\n" aus. Warum? Er war zu faul das immer wieder zu tippen. Wie aussagekräftig ist der Name "a()" wohl für einen anderen Programmierer?