Sauberer Code Zurück zur Übersicht
Über den Autor
Inhalt
1. Kommentare
2. Bezeichnung von Variablen, Konstanten, Funktionen und Klassen
3. Einrücken von Funktionen, Kontrollstrukturen, Schleifen
Hallo und willkommen zu meinem Tutorial zum Thema 'Wie schreibe ich einen sauberen Code'.
Dieses Tut gilt für PHP und die meisten anderen Programmiersprachen auch.
1. Kommentare
Wieso sollte man kommentieren? Ganz einfach: Wenn ihr nach Monaten in euren Code schaut, werdet ihr euch nicht so schnell erinnern, was ein Codeblock macht. Daher kommentiert man möglichst knapp und aussagekräftig.
Manchmal macht man vor Funktionen auch eine Parameterliste als Kommentar, um zu wissen, welche Datentypen die Parameter haben oder was als Rückgabewert erwartet wird.
Oder man kommentiert Programmblöcke aus, weil man darin einen Fehler vermutet und ihn so lokalisieren kann.
Es gibt unterschiedliche Arten, wie man einen Kommentar erstellen kann:
a) Einzeiliger Kommentar
Der einzeilige Kommentar wird bei PHP mit // oder alternativ auch mit # eingeleitet.
<?php //Einzeiliger Kommentar echo "Diese Ausgabe ist auskommentiert"; #Auch ein Einzeiliger Kommentar //Einzeiliger Kommentar ?>
b) Mehrzeiliger Kommentar
Der mehrzeilige Kommentar wird mit /* eingeleitet und endet beim */. Mit ihm kann man mehrere Zeilen auskommentieren.
<?php /* Kommentaranfang echo "auskommentierte Zeile 1; echo "auskommentierte Zeile 2; echo "auskommentierte Zeile 3; Kommentarende */ ?>
c) PHPDoc
PHPDoc unterscheidet sich nicht grundsätzlich vom mehrzeiligen Kommentar, es startet mit /** und endet mit */. Es wird für dafür verwendet um zu Kennzeichnen, wie Funktionen arbeiten, welche Parameter(-Datentypen) sie haben und was sie Zurückgeben.
<?php /** multipliziert mit Hilfe der Addition zwei Zahlen * @param: int $zahl1 * @param: int $zahl2 * @return: int */ function mult ($zahl1, $zahl2<) { $ergebnis = 0; for($i = 1; $i <= $zahl2; $i++) { $ergebnis += $zahl1; // Addiert solange $zahl1 zu $ergebnis, bis $i == $zahl2 } return $ergebnis; } ?>
2. Bezeichnung von Variablen, Konstanten, Funktionen und Klassen
a) Variablen
Variablen sollten immer gute und aussagekräftige Namen haben.
Will man z.B. eine E-Mail-Adresse in einer Variablen speichern um sie später auszugeben, sollte man die Variable auch entsprechend benennen:
<?php $email = "emailadresse@hoster.tld"; ?>
Würde die Variable $var heißen, wüsstet ihr später nicht mehr, wofür die Variable ist und müsstet hochscrollen bis zur Deklaration der Variable um zu gucken, was die Variable beinhaltet.
Will man eine Variable erstellen, die aus mehreren Wörtern bezeichnet wird, werden die Wörter mit einem Großbuchstaben oder einem Unterstrich gekennzeichnet:
<?php $meineErsteHomepage = "http://foo.bar"; $meine_erste_homepage = "http://foo.bar"; ?>
In der Schule und Uni hab ich die erste Variante gelernt, allerdings findet man in diversen Tutorials auch die zweite.
b) Konstanten
Konstanten werden immer vollständig großgeschrieben. Man definiert Konstanten in PHP mit dem Befehl define(string NAME, mixed Wert). Mehrere Wörter als Bezeichnung werden mit einem Unterstrich getrennt.
<?php ?>
c) Funktionen
Funktionen werden wie Variablen benannt. Ihr Name sollte aussagen, was die Funktion macht. Berechnet ihr z.B. einen Winkel aus zwei Geraden, die sich schneiden, könnte die Funktion möglicherweise wie folgt heißen:
<?php function berechneWinkel($gerade1, $gerade2){ // Programmcode } ?>
Man weiß sofort, was diese Funktion macht und muss sich nicht erst einmal durch den Programmcode arbeiten oder einen größeren Kommentar dazu schreiben.
d) Klassen
Und auch Klassen sollten passende Namen haben. Außerdem werden Klassen immer mit einem Großbuchstaben begonnen, die restlichen Buchstaben sind klein, es sei denn man baut ein weiteres Wort ein, das wird dann wieder mit einem Großbuchstaben begonnen. Will man eine Klasse für Pflanzen machen, sollte diese auch so heißen:
<?php class Pflanzen { // Variablen, Funktionen, ... } ?>
3. Einrücken von Funktionen / Kontrollstrukturen / Schleifen
<?php $begruessung="Hallo"; $name="David"; function begruesseUser ($begruessung,$name) { echo $begruessung." ".$name} for($i=0;$i<10;$i++) echo$i."<br />n"; echo("Das ist eine neue Zeile.<br />n";) $a=$_GET['ID']; switch(a){ case 0: echo"ID war 0"; break; case 1:echo "ID war 1"; break; case 2: echo "ID war 2";break; default: if($a<0){ echo "Es wurde keine gültige ID übergeben"; }else{ echo "Die ID war zu groß"; } break; } echo "Tschüss"; ?>
(Der Code muss nun keinen Sinn machen)
Ganz schön unübersichtlich, nicht wahr?
Daher immer einrücken und auch mal Leerzeichen einbauen!
Derselbe Code, aber schön eingerückt und mit Leerzeichen gespickt:
<?php $begruessung = "Hallo"; $name = "David"; function begruesseUser($begruessung, $name;) { echo($begruessung . " " . $name); } for($i = 0; $i < 10; $i++) { echo($i."\n"); } echo("Das ist eine neue Zeile\n";); $a = $_GET['ID']; switch($a) { case 0: echo "ID war 0"; break; case 1: echo "ID war 1"; break; case 2: echo "ID war 2"; break; default: if($a < 0;) { echo "Es wurde keine gültige ID übergeben" ; } else { echo "Die ID war zu groß"; } break; } echo "Tschüss"; ?>
Viel sauberer, wie ich finde. Außerdem besser lesbar, man weiß gleich, wo switch, if und else beginnen und aufhören.
Ich nutzte zum Einrücken immer zwei Leerzeichen und eingerückt wird nach einer Kontrollstruktur, Schleife, Funktion oder Klasse.
<?php if(bedingung1;) { // 4 Leerzeichen zum Einrücken Hier der if-Programmcode if(bedingung2;) { // 6 Leerzeichen zum Einrücken Hier der if-Programmcode } else { // 6 leerzeichen zum Einrücken Hier der else-Programmcode } } else { // 4 Leerzeichen zum Einrücken Hier der else-Programmcode } ?>
<?php for($i = 0; $i < 10; $i++) { // 4 Leerzeichen zum Einrücken $j = 3; while($j > 0) { // 6 Leerzeichen zum Einrücken $j--; } $k = 3; do { // 6 Leerzeichen zum Einrücken echo "Hallo"; $k--; } while($k > 0); } ?>
<?php function meineFunktion($param1, $param2;) { // 4 Leerzeichen zum Einrücken $ergebnis = 0; for($i = 0; $i < $param2; $i++) { // 6 Leerzeichen zum Einrücken $ergebnis += $param1; } return $ergebnis; } ?>
<?php class Auto { // 4 Leerzeichen zum Einrücken public $farbe; public getFarbe() { // 6 Leerzeichen zum Einrücken return $this->farbe; } } ?>
Schwer ist das alles nicht, man muss sich nur daran gewöhnen, es hilft später aber, wenn ihr Jemanden den Code zum durchschauen gebt oder selbst den Code nach einiger Zeit wieder anschaut.
Noch ein kleiner Tipp, um Klammern vergessen vorzubeugen :
Sobald ihr eine Klammer, ob geschweift oder normal, öffnet, schließt sie gleich wieder und schreibt den Code dann zwischen den beiden Klammern.
So könnt ihr schon kleine Fehler verhindern.
So, das war nun mein Tutorial. Falls ihr einen Fehler entdeckt, behaltet ihn nicht, ich bin nicht fehlerfrei und werde diesen gerne verbessern.
Edit: Änderungen nach Anregung durch "der_designer" und "Ghostridah" und überarbeitet von XMMX nach Zerstörung durch die Seitenumstellung.