PHP Coding Standard

Logo: PHP
38. Richtig und Falsch 2: Übersichtlich programmieren

Funktionsaufrufe, Strukturen von Arrays oder andere Konstrukte, die sehr lang sind, müssen übersichtlich aufgebaut werden. Dadurch können Fehler schneller gefunden werden und die Strukturen besser kontrolliert, erweitert und kommentiert werden.

Ungültig
   $form['title'] = array('#type' => 'textfield', '#title' => t('Title'), '#size' => 60,
   '#maxlength' => 128, '#description' => t('The title of your node.'),);

   // Do you know "mktime()" by heart?
   $date_and_time = date('c', mktime(1, 2, 3, 4, 5, 2006));

Alles in einer Zeile ist nur dann erlaubt, wenn die Zeile sehr kurz ist. Das Array-Beispiel wurde dem Coding Standard von Drupal entnommen.

Gültig
   $form['title'] = array(
      '#type' => 'textfield',
      '#title' => get_text('Title'),
      '#size' => 60,
      '#maxlength' => 128,
      '#description' => get_text('The title of your node.'),
   );

   // Example: $date_and_time = "2006-04-05T01:02:03+00:00"
   $date_and_time = date(
      'c',
      mktime(
         1, // hour
         2, // minute
         3, // second
         4, // month
         5, // day
         2006 // year
      )
   );

Diese Schreibweise ist deutlich übersichtlicher.

Natürlich kann man die Dokumentation von "mktime()" nachlesen, aber wie viel Zeit kosten diese Kommentare beim Programmieren, wo man sowieso in der Materie steckt? Und wie viel Zeit kostet das Nachschlagen einen "fremden" Programmierer, der gerade vor der Konsole sitzt und keinen Browser zur Verfügung hat?

In meinen Augen wäre es allerdings besser an diesen Stellen mit Variablen ($hour, $minute, etc.) zu arbeiten und diese vorher zu initialisieren. Damit ist dann direkt alles "sprechend".

Die Idee des Coding Standards von Drupal ist nicht schlecht. Das Komma nach dem letzten Element im Array ermöglicht das Hinzufügen weiterer Elemente. Schlecht an dem Beispiel (siehe "ungültig") ist die Funktion "t". Was bedeutet "t"? Muss ich mir als "Externer" jetzt wirklich Drupal herunterladen und nachsehen, was "t" macht oder ist es eine Testbezeichnung?