Heyho,
ich weiß, dass wird für viele ein alter Hut sein, aber ich denke, für Neulinge ist das ein interessantes Thema.
Deshalb hier mal einige gute Seiten, zu den Themen, mit dem Wichtigsten rausgepickt. Vielleicht ist auch was für die Weisen unter euch noch was dabei.
Eins vorweg: OOP bedeutet hier immer ObjektOrientierte Programmierung. Ich bin nur zu faul, das auch auszuschreiben
Coding Standards
Die Seite: Pear PHP Coding Standards. Allerdings etwas veraltet, deshalb hier die wichtigsten und universalen Punkte zusammen gefasst:
- Kontrollstrukturen
- Ein Leerzeichen vor der öffnenden und nach der schließenden Klammer
- Immer die geschweiften Klammern verwenden, auch wenn optional
- Wenn die Bedingungen zu lang werden (>80 Zeichen in der Zeile) kann vor den Vergleichsoperatoren umgebrochen werden, diese werden dann eingerückt (siehe Bsp., danke cotton)
- Wenn man sich nicht sicher ist, ob == als Vergleich reicht (die PHP Dok. hilft), immer === verwendenPHP
Alles anzeigen// Beispiel if ($a == 1 || ($b === "2")) { return true; } elseif (1 != 2) { return true; } else { return false; } if (isset($_POST['langerName']) and !empty($_POST['langerName']) && isset($_POST['nochEinLangerName']) and !empty($_POST['nochEinLangerName']) && isset($abc) ) { /*...*/ }
- Funktionen
- Funktionsnamen sind beschreibend, erster Buchstabe klein (Präfix zählt nicht), jedes "neue" Wort groß
- Vor die Beschreibung sollte der Paketname gesetzt werden (klein) um Kollisionen mit anderen Funktionsnamen zu vermeiden
- Bei der Definition soll der Original K&R Einrückungsstil verwendet werden (siehe Bsp.; ich persönlich bevorzuge aber ein einfaches Leerzeichen vor der öffnenden geschweiften Klammer)
- Bei Aufrufen kein Leerzeichen nach Funktionsnamen, der öffnenden Runden Klammer und dem letzten Parameter
- Leerzeichen nach Kommas zur Parametertrennung und der schließenden runden KlammerPHP
Alles anzeigen// Beispiel function fooFunction($arg1, $arg2 = '') { if (condition) { statement; } return $val; } function gbgetComments($arg1, $arg2 = '') // mögl. Name für eine Funktion, welche im Gästebuch (gb) Kommentare ausgibt { if (condition) { statement; } return $val; } $var = fooFunction($bar, $baz, $quux);
- Kommentare
- Es sollte der C-Stil (// und /* */) anstatt dem Perl-Stil (#) verwendet werden
- Blockkommentare werden eingerückt
- Erste Zeile ist ein /**, bei den weiteren Zeilen ist ein Stern direkt unter dem ersten Stern der ersten Kommentarzeile zu setzen, mit einem Leerzeichen danach
- Letzte Zeile ist der schließende */ Tag, mit der beschriebenen Instanz in der nächsten Zeile, ohne Leerzeile
- Genaue Definitionen von Blockkommentaren in der oben verlinkten DokumentationPHP
Alles anzeigen// Beispiel // Indexvariable zum Schleifendurchgang zählen $i++; /** * Erstellt eine Foo Klasse * * Erstellt eine Klasse, um das foo Universum zu definieren * * Absätze sind durch eine Zeile nur mit Stern gekennzeichnet * Zudem sind solche Kommentare eigentlich immer in Englisch * Auch hier ist auf die Zeilenlänge zu achten */ class Foo ($bla, $blub) { // Klasse erstellen }
- OOP
- Klassennamen beginnen mit Großbuchstaben, sowie Großbuchstaben bei jedem weiteren neuen Wort
- Unterstriche werden nur verwendet, um die Klassenhierarchie auch in den Namen wiederzuspiegeln
- Bei OOP werden private Funktionen (nicht protected) mit Unterstrich am Anfang deklariert
- Die öffnende geschweifte Klammer soll in einer eigenen Zeile stehen
- Es werden keine Klassen mit include/require oder _once eingebunden, stattdessen __autoload() oder eine personalisierte Version verwendenPHP
Alles anzeigen// Beispiel __autoload(); class Net_Finger { // der Klassencode } $class = Foo_Bar(); // durch Autoload möglich
- Sonstiges
- Konstanten werden immer komplett GROSS geschrieben, außer true, false, null, diese IMMER klein!
- Einrücken mit 4 Leerzeichen, keine Tabulatoren
- Zeilenlänge von um die 80 Zeichen (75-85 wird angegeben)
- Eingebunden wird immer mit den _once Funktionen, welche kommt auf die Wichtigkeit des einzubindenden Codes an
- Beispiel URLs sind example.com, .net oder .org
- Es sollte für PHP Blöcke IMMER <?php ?> verwendet werden, nie Kurzformen
- Zeilen sollten nur als LF erstellt werden, keine Mac CR oder Windows CRLF
- Es wird in der Doc empfohlen, ASCII mit ISO-8859-1 zu verwenden, aber ANSI mit UTF-8 ohne BOM geht heute eigentlich auch und erlaubt auch mehr Zeichen in evtl. HTML Bereichen.
Best Practices
Hier habe ich eigentlich nicht wirklich viel zu sagen, im Grunde gibts nur zwei Links, ich hoffe, sie helfen trotzdem
- Für die Entscheidung bei gewissen Codesnippets hilft diese Seite: The PHP Benchmark
- Bei großen Projekten kann auch die Ungarische Notation von Variablen helfen (Apps Hungarian): Apps Hungarian
- Zudem empfiehlt es sich, sich für wirklich große Sachen mit OOP vertraut zu machen, kann einem bei Benutzerverwaltung/Gästebucheintragen/allem mit mehreren Instanzen viel Arbeit abnehmen
Ich hoffe, ich kann einigen hier den Weg zu sauberem Code von Anfang an weiter helfen, und auch den erfahrenen Jungs noch ein paar Tricks näher bringen (ich habe zB nicht gewusst, dass es SO große Unterschiede bei Schleifen geben kann).
Wenn irgendetwas bei jemandem direkt Augenkrebs auslöst, bitte melden, genauso, wenn man noch weitere Tipps hat!
Und wenn man nun stolz seinen suaberen Code im Forum präsentieren möchte (oder auch, wenn Fehler drin sind ), nutzt bitte gleich die Buttons über der Beitrags textarea!!! Die haben, Titel, welche angezeigt werden, wenn man mit der Maus drüberfährt, bitte nutzt die BB-Codes zur Codeformatierung!!!
lauras: Vielleicht wäre es möglich, den Thread anzupinnen, ist, glaube ich, ein Thema, welches längerfristig wichtig ist, oder?