Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
dev:all:start [10.08.2014 22:51] – Manuela v.d.Decken | dev:all:start [17.09.2014 04:27] – Manuela v.d.Decken | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Coding | + | [[dev: |
- | [[dev:all:standards|Coding Standards]] | + | ... für einige willkommen, für andere wiederum ein rotes Tuch. |
- | + | Dabei wollen Standards nicht vorschreiben, was und wie man programmiert. Sie sorgen einfach nur dafür, dass Quellcode von unterschiedlichen Codern eben die selbe Basis benutzt. Dass jeder problemlos | |
- | ===== PHP Dateiformatierung ===== | + | ---- |
- | + | [[dev: | |
- | ==== Allgemein ==== | + | ... eine Sammlung von Codebeispielen, |
- | + | ---- | |
- | Für Dateien mit der Endung | + | [[dev: |
- | Beginnt eine Datei mit PHP Code, so ist zwingend das öffnende **<? | + | ... werden |
- | Textdateien (also nicht Binär-Dateien wie Bilder etc.) müssen grundsätzlich im UTF-8 Format ohne BOM (ByteOrderMark) abgespeichert werden.\\ | + | ---- |
- | Dieser Punkt ist vor allem bei Benutzern von Windows-Umgebungen explizit zu beachten, da unter Unix/Linux in der Regel UTF-8 sowieso Systemstandard ist. | + | |
- | ==== Einrücken ==== | + | |
- | Die Standardschrittweite des Tabulators ist auf 4 Leerzeichen einzustellen. Ein Einzug besteht grundsätzlich aus 4 Leerzeichen. Tabulatoren selbst sind an keiner Stelle erlaubt und sollten der Einfachheit halber vom Editor automatisch in jeweils 4 Leerzeichen umgewandelt werden. | + | |
- | ==== Maximale Zeilenlänge ==== | + | |
- | Die Zielzeilenlänge ist 80 Zeichen. Entwickler sollten jede Zeile ihres Codes unter 80 Zeichen halten, soweit das möglich | + | |
- | ==== Zeilenbegrenzung ==== | + | |
- | Die Zeilenbegrenzung folgt der Unix Textdatei Konvention. Zeilen müssen mit einem einzelnen Zeilenvorschubzeichen(**LF**) enden. Zeilenvorschubzeichen werden durch eine ordinale 10, oder durch 0x0A (hexadezimal) dargestellt.\\ | + | |
- | :!: **Beachte: | + | |
- | ===== Namens-Konventionen ===== | + | |
- | + | ||
- | ==== Allgemeines ==== | + | |
- | + | ||
- | WebsiteBaker übernimmt auch hier weitgehendst die Standards von Zend in einer an die Besonderheiten von WB angepassten Form. Die wichtigste Abweichung findet sich im Aufbau der Suchpfade für die Dateien. In späteren Versionen wird auch hier eine weitere Annäherung an Zend erfolgen. | + | |
- | < | + | |
- | **Hinweis:** | + | |
- | Die strikte Einhaltung dieser Konventionen ist zwingend erforderlich, | + | |
- | </blockquote> | + | |
- | ==== Klassen ==== | + | |
- | Klassennamen müssen in **StudlyCaps** deklariert werden und müssen folgender RegEx-Regel entsprechen: | + | |
- | ^Bezeichner ^ Stautus | | + | |
- | |smtp_mailer | [color=red]falsch[/ | + | |
- | |Smtp_Mailer | [color=red]falsch[/ | + | |
- | |SMTPmailer | [color=red]falsch[/color] | | + | |
- | |SmtpMailer | [color=green]richtig[/ | + | |
- | + | ||
- | ==== Abstrakte Klassen und Interfaces ==== | + | |
- | Generell folgen abstrakte Klassen und Interfaces der gleichen Konvention wie Klassen, mit einer zusätzlichen Regel: Die Namen von abstrakten Klassen und Interfaces müssen mit derm Term "**Abstract**" | + | |
- | + | ||
- | ==== Emulierte Namespaces ==== | + | |
- | In diesem Modus ist in Klassennamen zusätzlich der Unterstrich ' | + | |
- | + | ||
- | Die Klassenbibliotheken von WebsiteBaker sind in mehrere Gruppen aufgeteilt: | + | |
- | **Klassen des Kerns**: | + | |
- | **Klassen der Module**: Klassen der Module im jeweiligen Modulverzeichnis **''/ | + | |
- | **Klassen des ACP**: (AdminControlPanel => ehem. Backend) sind im Verzeichnis **''/ | + | |
- | **Klassen der third-party libraries**: | + | |
- | + | ||
- | ==== Dateinamen ==== | + | |
- | Soweit die vorgenannten Regeln für Klassennamen eingehalten wurden, ergeben sich die Dateinamen eindeutig aus den Klassennamen. Die Klasse **m_MyModul_PluginAbstract** findet sich demnach in der Datei **''/ | + | |
- | Für alle anderen Dateien sind nur alphanummerische Zeichen und der Bindestrich (**-**) gestattet. Leerzeichen sind völlig verboten.\\ | + | |
- | Jede Datei die irgendeinen PHP Code enthält sollte mit der Endung **.php** enden. | + | |
- | + | ||
- | ==== Funktionen und Methoden ==== | + | |
- | + | ||
- | Funktionsnamen dürfen nur Alphanummerische Zeichen enthalten. Unterstriche sind nicht gestattet. Nummern sind in Funktionsnamen gestattet aber in den meisten Fällen nicht empfohlen. | + | |
- | Funktionsnamen sollten den Pascal-Case-Konventionen folgen und immer mit einem Großbuchstaben anfangen. Wenn Funktionsnamen aus mehr als einem Wort bestehen, muß der erste Buchstabe jeden Wortes großgeschrieben werden. Wortreichtum wird generell befürwortet. Funktionsnamen sollten so wortreich wie möglich sein um deren Zweck und Verhalten möglichst genau zu erklären. | + | |
- | + | ||
- | Für Objekt-orientiertes Programmieren, | + | |
- | + | ||
- | + | ||
- | Wenn Design-Pattern implementiert werden, wie Singleton oder das Factory Pattern, sollte der Name der Methode den Namen des Pattern enthalten wo es praktikabel ist, um das Verhalten besser zu beschreiben. | + | |
- | + | ||
- | + | ||
- | ===== Code Stil ===== | + | |
- | + | ||
- | + | ||
- | + | ||
- | ===== Inline Dokumentation ===== | + | |