Hauptmenü

Untermenü

PHP - Grundlagen - Programmierstile - Variablen- und Funktionsnamen

1. Grundsätzliches

In den letzten Jahren hat sich auch hier ein Quasi-Standard etabliert, der aus anderen Sprachen übernommen worden ist. Es gibt da zwar einige Variationsmöglichkeiten, aber das Grundprinzip ist dasselbe. Allerdings werde ich hier das ein oder andere Mal kräftig meinen Senf dazugeben, wenn ich etwas für nicht so glücklich halte.

2. Konstanten

... werden immer groß geschrieben. Da erkennt man auf einen Blick, um was es sich da handelt. Und das war es schon zu diesem Thema.


<?php
  define('DEUTSCH'1);
  echo DEUTSCH;
?>

3. Funktionsnamen

Hier hat sich eine Schreibweise etabliert, die unter dem Begriff Camel Caps bekannt ist. Dabei gliedert sich der Funktionsname in zwei Teile. Ich nenne es das "Tu-Was"-Prinzip. Der erste Teil beschreibt dabei die Art der Handlung und wird klein geschrieben. Im zweiten Teil geht es dann um das Was. Hier beginnt man mit einem Großbuchstaben.


<?php
  function getContent ()
?>

Der "Tu"-Teil

Hier gelten ein paar einfache Regeln. Wenn man sich etwas holt, so nimmt man get, wenn man etwas setzt, so benutzt man set, wenn man etwas aufruft ohne Rückgabewert so wird häufig call genommen, und so weiter und so fort. Als kleine Hilfe sollte man sich die Funktionsbezeichnungen in PHP anschauen. Dann kommt man auch auf Dinge wie replace, unset oder auch destroy.


<?php
  function unsetSession ()
  function replaceContent ()
  function destroyUser ()
?>

Der "Was"-Teil

Hier sollte man relativ genau beschreiben, um was es sich handelt. Da PHP erst seit Version 5.3 Namespaces kennt, artet das bei Klassenbezeichnungen manchmal ziemlich aus. Dazu wird es später auch mal ein Tutorial geben. Wichtig ist aber, dass die "Einzelbeschreibungen" immer mit einem Großbuchstaben beginnen.


<?php
  function unsetLoginSession ()
  function getContentFromArray ()
  function sendUserMail ()
?>

4. Variablennamen

Hier hat sich in letzter Zeit ein Trend breit gemacht, von dem ich, ehrlich gesagt, gar nichts halte. Dabei wird obige Schreibweise übernommen, nur die Aufteilung ist anders. Nennen wir es mal das "Typ-Hauptinfo[-Nebeninfo]"-Schema. Der Variablenname beginnt mit einem Kleinbuchstaben, der in verkürzter Form den Typ der Variable beschreibt, also zum Beispiel a für ein Array, i für ein Integer, s für einen String oder g für globale Variablen. Als nächstes kommt die Beschreibung des Inhalts, beginnend mit einem Großbuchstaben, also zum Beispiel Nav für die Inhalte eines Navigationsmenüs. Zusätzlich kann man daran weitere Infos anhängen, die ebenfalls mit einem Großbuchstaben beginnen. Dieses Schema kann man auch als Index bei assoziativen Arrays anwenden.


<?php
  $aNavTree    = ...
  $sSearchWord = ...
  $iUserGroup  = ...
  
  $_SESSION['sUserName']  = ...
  $aUserInfo['sUserCity'] = ...
?>

Meine Meinung

Grundsätzlich habe ich nichts gegen dieses Schema. Mir persönlich stinken nur zwei Dinge, die aber gewaltig. Ersten die Schreibweise. Sie erinnert mich zu stark an den Aufbau von Funktionsnamen, was zu Irritationen führen kann. Ich persönlich bevorzuge daher die Unterstrich-Methode, die lange Zeit gang und gäbe war (und es auch heute zum Teil noch ist). Auch mag ich hier eine konsequente Kleinschreibung. So kann man auf den allerersten(!) Blick erkennen, dass es sich um eine Variable handelt und nicht um eine Funktion. Denn wie viele Bildschirmleser scanne ich zuerst den Text nach bestimmten Merkmalen, bevor ich ihn tatsächlich lese.


<?php
  $a_nav_tree    = ...
  $s_search_word = ...
  $i_user_group  = ...
  
  $_SESSION['s_user_name']  = ...
  $aUserInfo['s_user_city'] = ...
?>

Als zweites stört mich die Sache mit der "Ein-Buchstaben-Typ-Kurzbeschreibung". Bei stark typisierten Sprachen mag das ja durchaus sinnvoll sein. Bei PHP aber kann es meiner Meinung nach Entwickler dazu verführen, eine Typprüfung aus Leichtsinnigkeit und/oder Faulheit zu unterlassen, so nach dem Motto:

"Ich habe doch ein i vor die Variable gesetzt. Das soll also ein Integer sein. Warum machst du daraus einen String?" [Quelle: ein leichtsinniger und/oder fauler Programmierer]

Außerdem ist es meiner Meinung nach ein wenig irreführend. Steht das s nun für einen String oder eine Session? Darum sage ich, weg damit. Auch wenn mich einige dafür kreuzigen möchten, meine Kollegen eingeschlossen ;-).

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt