EN: German style guide for Doctrine 2 projects
DE: Deutschsprachige Programmierrichtlinien für Projekte auf Basis von Doctrine 2
Die vorliegenden Programmierrichtlinien basieren auf PSR-1 und PSR-2 der PHP FIG, beinhalten jedoch nicht alle der dortigen Empfehlungen.
Die Schlüsselwörter MÜSSEN/MÜSSEN NICHT/DÜRFEN NUR/DARF KEIN und SOLLTEN/SOLLTEN NICHT definieren, wie verpflichtend eine Regel einzuhalten ist.
- Dateien DÜRFEN NUR die PHP-Tags <?php und <?= verwenden.
- Dateien MÜSSEN als Zeichenkodierung UTF-8 ohne BOM für PHP-Code verwenden.
- Dateien SOLLTEN entweder Symbole (wie Klassen, Funktionen, Konstanten, etc.) definieren oder eine Auswirkung haben (z.B. eine Ausgabe mit echo generieren). Sie SOLLTEN NICHT beides tun.
- Namespaces und Klassen MÜSSEN einen Autoloading-Standard befolgen.
- Klassen-Namen MÜSSEN den UpperCamelCase verwenden.
- Klassen-Konstanten MÜSSEN Großbuchstaben verwenden. Einzelne Wörter innerhalb dieser Bezeichner werden mittels Underscore getrennt.
- Methoden-Namen MÜSSEN den lowerCamelCase verwenden.
- Programmiercode MUSS vier Leerzeichen als Einrückung verwenden (keine Tabulatoren bzw. Tabs).
- Es DARF KEIN hartes (verpflichtendes) Zeichenlimit für einzelne Zeilen geben; das softe Limit MÜSSEN 120 Zeichen pro Zeile sein; Zeilen SOLLTEN 80 Zeichen oder weniger enthalten.
- Eine Zeile DARF NUR eine Anweisung enthalten, d.h. nach einem Semikolon erfolgt immer ein Zeilenumbruch.
- Nach der Deklaration des Namespaces MUSS eine Leerzeile folgen und es MUSS eine weitere Leerzeile nach dem Block mit den USE-Deklarationen geben.
- Die öffnenden und schließenden geschweiften Klammern einer Klasse MÜSSEN einzeln in einer eigenen Zeile stehen.
- Die öffnenden und schließenden geschweiften Klammern einer Methode MÜSSEN einzeln in einer eigenen Zeile stehen.
- Die Sichtbarkeit von Attributen und Methoden MUSS immer angegeben werden; abstract oder final MUSS vor der Sichtbarkeit angegeben werden; static MUSS nach der Sichtbarkeit angegeben werden.
- Kontrollstrukturen MÜSSEN ein Leerzeichen zwischen dem jeweiligen Schlüsselwort und der öffnenden runden Klammer aufweisen; Funktions- und Methodenaufrufe DÜRFEN KEIN Leerzeichen vor der öffnenden runden Klammer haben.
- Die öffnenden geschweiften Klammern von Kontrollstrukturen DÜRFEN KEINE eigene neue Zeile einnehmen, die schließenden geschweiften Klammern MÜSSEN hingegen einzeln in einer eigenen Zeile stehen.
- Nach den öffnenden und vor den schließenden runden Klammern von Kontrollstrukturen DARF KEIN Leerzeichen stehen.
- PHP-Schlüsselwörter (z.B. if und for) und PHP-Konstanten (true , false und null) MÜSSEN in Kleinbuchstaben geschrieben werden.
- Die Bezeichner von Attributen und Methoden DÜRFEN NICHT mit einem Underscore beginnen.
- Alle PHP-Dateien MÜSSEN den Unix-Zeilenumbruch (LF) verwenden.
- Das schließende PHP-Tag am Dateiende MUSS weggelassen werden, sofern die Datei nur PHP-Code enthält (sogenannte pure PHP-Dateien).
- Alle (puren) PHP-Dateien MÜSSEN mit einer einzelnen Leerzeile enden.
- Nach jedem Komma-Separator MUSS genau ein Leerzeichen folgen.
- Vor und hinter binären Operatoren (z.B. bei == und &&) MUSS genau ein Leerzeichen gesetzt werden.
- Zwischen unären Operatoren (z.B. ! und --) und dem Operanden DARF KEIN Leerzeichen gesetzt werden.
- Hinter jedem Element in einem mehrzeiligen Array (auch und vor allem hinter dem letzten Element) MUSS ein Komma folgen.
- Vor return-Anweisungen MUSS genau eine Leerzeile ergänzt werden, außer das Return steht als einzige Anweisung innerhalb geschweifter Klammern (z.B. bei einer if-Anweisung).
- Unabhängig von der Anzahl der Anweisungen MÜSSEN immer geschweifte Klammern benutzt werden, um den Rumpf von Kontrollstrukturen zu kennzeichnen (z.B. bei if-Anweisungen oder Schleifen).
- Pro Datei DARF NUR genau eine Klassen-Definition notiert werden.
- Alle Klassen-Attribute MÜSSEN über den Methoden deklariert werden.
- Methoden MÜSSEN bei der Deklaration nach ihrer Sichtbarkeit sortiert werden, zuerst kommt public, dann protected und zuletzt private. Laut Symfony-Standards bildet der Konstruktor eine Ausnahme, der zur besseren Lesbarkeit unabhängig von seiner Sichtbarkeit immer direkt nach den Attributen kommen sollte. Ich persönlich würde dies auf alle magischen Methoden ausweiten und den Konstruktur als Erstes angeben.
- Bei der Instanziierung einer Klasse MÜSSEN die runden Klammern nach dem Klassen-Namen immer angegeben werden.
- Für die Bezeichner von Variablen, Funktionen und Parametern MUSS immer der lowerCamelCase verwendet werden.
- Für die Schlüssel von Options-Arrays und bei den Namen von Formularfeldern MÜSSEN Kleinbuchstaben verwendet werden. Einzelne Wörter werden durch Underscores getrennt.
- Für alle Klassen MÜSSEN Namespaces verwendet werden.
- Bei abstrakten Klassen MUSS das Präfix Abstract im Bezeichner verwendet werden.
- In Dateinamen DÜRFEN NUR alphanumerische Zeichen (lateinische Buchstaben und arabische Ziffern) und der Underscore verwendet werden.
- Für Kontrollstrukturen SOLLTE die C-Syntax mit geschweiften Klammern verwendet werden. Lediglich in Templates SOLLTE zur besseren Lesbarkeit die [alternative Syntax] (http://php.net/de/control-structures.alternative-syntax) verwendet werden, wobei der Doppelpunkt direkt nach der schließenden runden Klammer kommt.
- Die öffnenden und schließenden geschweiften Klammern von Funktionen SOLLTEN genauso wie bei den Methoden einzeln in einer eigenen Zeile stehen.
- Vor und hinter dem Pfeiloperator -> DÜRFEN KEINE Leerzeichen stehen.
- Klassen-Namen SOLLTEN im Singular formuliert werden.
- Tabellennamen in Datenbanken SOLLTEN im Plural formuliert werden.
- In den Namen von Datenbanken, Tabellen und Tabellenspalten DÜRFEN NUR Kleinbuchstaben verwendet werden. Einzelne Wörter werden durch Underscores getrennt.