
| Joomla! Coding Standards |
|
|
|
| Donnerstag, 28. September 2006 | |
Original: http://dev.joomla.org/component/.../joomla_coding_standards
Gute Codingstandards sind wichtig in jedem Entwicklungsprojekt, aber besonders wenn mehrere Entwickler an demselben Projekt arbeiten. Codingstandards helfen sicherzustellen, dass der Code von hoher Qualität ist, weniger Bugs hat und leicht zu verwalten ist.
FormatJoomla! wird an den PEAR coding standards festhalten. Du kannst sie Dir auf pear.php.net ansehen, oder sie hier lesen: Version: September 10, 2005, 01:57:59 PM Pear Coding StandardsZeileneinzug und ZeilenlängeBenutze einen Zeileneinzug von 4 Leerzeichen, ohne Tabs. Wenn Du Emacs zum Bearbeiton von PEAR Code nutzt, solltest Du set indent-tabs-mode auf nil setzen. Hier ist ein Beispiel mode hook, der Emacs auf diese Richtlinie einstellt (Du solltest sicher stellen, dass dies aufgerufen wird, wenn Du PHP Dateien bearbeitest): Code: (defun php-mode-hook () (setq tab-width 4 c-basic-offset 4 c-hanging-comment-ender-p nil indent-tabs-mode (not (and (string-match "/\\(PEAR\\|pear\\)/" (buffer-file-name)) (string-match "\.php$" (buffer-file-name)))))) Hier sind die vim Regeln dafür: Code: set expandtab set shiftwidth=4 set softtabstop=4 set tabstop=4 Es wird empfohlen Zeilen nach maximal 75-85 Zeichen umzubrechen. Es gibt keine Standardregeln für das Umbrechen von Zeilen (Unter Windows haben sich 80 Zeichen/Zeile bewährt), nutze Dein Beurteilungsvermögen, und wenn du unsicher bist, frage in der PEAR Quality Assurance Mailingliste nach. KontrollstrukturenKontrollstrukturenDiese beinhalten if, for, while, switch, etc. Hier ist ein Beispiel für eine if Abfrage, da sie die Komplexeste ist: Code: <?php if ((condition1) || (condition2)) { action1; } elseif ((condition3) && (condition4)) { action2; } else { defaultaction; } ?> Anweisungen sollten ein Leerzeichen zwischen dem Kontrollschlüsselwort und der sich öffnenden runden Klammer haben, um sich von den Funktionsaufrufen zu unterscheiden. Es wird stark empfohlen geschweifte Klammern zu nutzen, auch wo sie technisch gesehen nur optional sind. Sie einzusetzen erhöht die Lesbarkeit und verhindert gleichzeitig logische Fehler, die sich einschleichen können, wenn neue Zeilen hinzugefügt werden. Für die Switch Anweisung: Code: <?php switch (condition) { case 1: action1; break; case 2: action2; break; default: defaultaction; break; } ?> FunktionenFunktionsaufrufeFunktionen sollten ohne Leerzeichen zwischen dem Funktionsnamen und der sich öffnenden runden Klammer, und dem ersten Parameter aufgerufen werden; Leerzeichen zwischen Kommas und jedem Parameter, und keine Leerzeichen zwischen dem letzen Parameter und der sich schliessenden Klammer, und dem Semikolon Hier ein Beispiel: Code: <?php $var = foo($bar, $baz, $quux); ?> Wie oben gezeigt, sollte ein Leerzeichen auf jeder Seite der Zuweisung des Rückgabewertes an eine Variable sein. Im Falle, dass ein Block von Anweisungen kommt, können mehr Leerzeichen eingefügt werden, um die Lesbarkeit des Codes zu verbessern: Code: <?php $short = foo ( $bar ); $long_variable = foo ( $baz ); ?> Funktionen DefinierenFunktionsdeklarationen folgen der "one true brace" Konvention: Code: <?php function fooFunction ( $arg1, $arg2 = ' ' ) { if (condition) { statement; } return $val; } ?> Funktionsparameter mit Standardwerten werden ans Ende der Parameterliste gesetzt. Es sollte immer versucht werden einen aussagekräftigen Wert aus einer Funktion zurückgeben zu lassen, wenn angebracht. Hier ein etwas größeres Beispiel: Code: <?php function connect(&$dsn, $persistent = false) { if (is_array($dsn)) { $dsninfo = &$dsn; } else { $dsninfo = DB::parseDSN($dsn); } if (!$dsninfo || !$dsninfo['phptype']) { return $this->raiseError(); } return true; } ?> Code, Tags, URLsCode hinzufügen Überall wo du ohne Vorbehalt eine Klassendatei einfügt, nutze require_once(). Überall wo du unter Vorbehalt eine Klassendatei einfügst (z.B. Factory Methoden), nutze include_once(). Beide stellen sicher, dass die Klassendatei nur einmal eingefügt wird. Sie benutzen die gleiche Dateiliste, daher musst Du Dir keine Sorgen über die gemischte Verwendung beider machen - eine Datei die mit require_once() eingefügt wird, wird nicht noch einmal mit include_once() eingefügt.
Anmerkung: include_once() und require_once() sind Anweisungen, keine Funktionen. Es werden keine runden Klammern um die Dateinmamen der Klassendateien benötigt. PHP Code Tags Nutze immer <?php ?>, um PHP code auszuweisen, nicht die <? ?> Kurzform. Dies wird für die PEAR Kompatibilität benötigt und ist der sicherste Weg PHP Code auch auf anderen Betriebssystemen und Konfigurationen zu portieren.
|
| weiter > |
|---|










