In der Programmierung, besonders bei größeren Projekten/ Scripten, wird der Quellcode schnell unübersichtlich und schwer wartbar. Wer schon einmal ein Programm/ Script mit mehr als 1000 Zeilen geschrieben hat, wird mir da sicherlich zustimmen. Aus diesem Grund empfiehlt es sich, den Quellcode zu kommentieren und übersichtlich einzurücken. Zu dem können if/else-Kontrollstrukturen und Datenbankabfragen verkürzt dargestellt werden. In diesem Tutorial möchte ich Ihnen dazu einige Beispiele bieten.
Kommentare einsetzen
In der Programmierung sind Kommentare (Comments) meiner Meinung nach das Salz in der Suppe. Sie ermöglichen es uns auch noch nach Monaten, jeden Abschnitt des jeweiligen Quellcodes besser und somit schneller zu verstehen. Dies ist besonders wichtig, wenn fremder (nicht von uns selbst programmierter) Code vorliegt. Ich habe mir angewöhnt, besonders komplexe Passagen direkt mit einem Kommentar zu versehen. In PHP gibt es dazu zwei Möglichkeiten:
/*Einzeiliger Kommentar*/ // einzeilige Kommentare können mit ’//’ (zwei Backslashes) in den Quellcode eingefügt werden /*Mehrzeiliger Kommentar*/ /* mehrzeilige Kommentare werden mit einem * beginnenden ’/*’ (Slash und folgendem Sternchen) * eingeleitet und mit ’*/’ (also umgekehrt) * wieder abgeschlossen. * In jeder neuen Zeile empfehle ich ein * Sternchen als Einleitung einzufügen */
Auch wenn Kommentare Mehrarbeit bedeuten, möchte ich Ihnen nahelegen, davon ausgiebig Gebrauch zu machen. Spätestens wenn ein älteres Projekt verändert/angepasst werden muss, werden sie dies zu schätzen wissen. Zudem wird der Lerneffekt verstärkt, da Sie sich mit dem erstellten Quellcode intensiver auseinandersetzen.
Quellcode einrücken
Genau wie beim Kommentieren erfordert das durchgehende Einrücken des Quellcodes zunächst mehr Aufwand (obwohl es bei mir eigentlich schon automatisch erfolgt). Aber neben der verbesserten Lesbarkeit wird durch diese Maßnahme vor allem die Fehlersuche enorm erleichert. Dabei haben sich folgende zwei Möglichkeiten/ Stile etabliert (Einrückunsstile)
/* Stil 1 */ if($ausruf == 'Hallo') { echo "Er hat 'Hallo' gerufen"; } else { echo "Er hat nichts gerufen"; } /* Stil 2 */ if($ausruf == 'Hallo') { echo "Er hat ‘Hallo’ gerufen"; } else { echo "Er hat nichts gerufen"; }
Die Einrückungstiefe kann dabei getrost selbst bestimmt werden. Einige nehmen einen ganzen ‘Tab’, andere nur zwei oder drei Leerzeichen. Ich denke, dabei kommt es auf die Verschachtelungstiefe an.
Ich persönliche ertappe mich regelmäßig dabei, dass ich Mal den einen und Mal den anderen Einrückungsstil verwende. Den ersteren Aufgrund meiner Java/C++-Erfahrung (der etwas mehr Platz spart) und den zweiten hinsichtlich PHP (den ich als etwas übersichtlicher empfinde). Des Weiteren achte ich darauf, dass z.B. Gleichheitszeichen bei Zuweisungen ordentlich untereinanderstehen.
$string = 'Hallo Welt'; $boolean = true; $int = 5; ...
Entscheiden Sie selber, wie Sie Ihren Quellcode überschaubarer gestalten! Viele Editoren besitzen bereits eine automatische Einrückung oder das sogenannte Syntaxhighlighting, wodurch dieser Schritt vereinfacht wird.
Quellcode verkürzen
Dies ist ein heikles Thema und es gehört viel Erfahrung und eine Menge Grips dazu, Algorithmen oder einfacher gesagt die Programmierlogik zu verkürzen. Während der ersten Schritte, in denen man sich die Basics der Programmierung aneignet, kommt es meistens zu ausufernden Konstrukten, um z.B. eine Anweisung zu programmieren.
Ausgiebiger Gebrauch von verschachtelten if/else-Kontollstrukturen führen zwar letztendlich ebenfalls zum Ziel, sind jedoch fehleranfälliger und verlangsamen das Programm/ Script (mal ganz abgesehen von der bereits zuvor angesprochenen schlechteren Übersichtlichkeit).
Während diverser Weiterbildungen war es ein beliebter „Wettbewerb“ unter den Teilnehmern, alles möglichst kurz zu programmieren. Die Königsklasse hierbei war der legendäre „Einzeiler“: Unter Verwendung der ausgeklügelsten Techniken (Stichworte: Modulo, Reguläre Ausdrücke, …) wurde mehrzeiliger Code zu einer einzigen Zeile komprimiert.
Ich habe dabei ein ums andere Mal große Augen bekommen, mir dies aber möglichst nicht anmerken lassen
!
Doch neben genug Gehirnschmalz und Erfahrung gibt es auch ein paar Techniken, die leicht erlernbar sind und den Quellcode ebenfalls kürzer und überschaubarer gestalten.
Eine Möglichkeit besteht darin, einfache if/else-Kontrollstrukturen in einer einzigen Zeile auszuführen:
/* Lange Version */ if(isset($_POST['color'])) { $backgroundcolor = $_POST['color']; } else { $backgroundcolor = 'white'; } /* Kurze Version */ $backgroundcolor = (isset($_POST['color'])) ? ($_POST['color'] : 'white';
Das Beispiel ist aus der Luft gegriffen und bezieht sich auf PHP. Eine ähnliche Syntax gibt es auch für Java und C++ (…). Es handelt sich hierbei um die sogenannten ‘Ternary Operators’ (engl. Dreifach-Operatoren). Am Anfang etwas gewöhnungsbedürftig, möchte man sie später (einmal verinnerlicht) nicht mehr missen.
Mit dem PHP-Befehl sprintf läßt sich der Quellcode ebenfalls oftmals verürzt und übersichtlicher darstellen.
/* Beipiel herkömmliche Schreibweise */ <?php $query = "SELECT telefon FROM kunde WHERE vorname = '".addslashes($vorname)."' AND name = '".addslashes($name)."' AND strasse = '".addslashes($strasse)."'"; $result = mysql_query($query); ... /* Nicht sehr übersichlich, oder?! Dann schauen Sie sich mal dieses Beispiel an*/ $query = sprintf("SELECT telefon FROM kunde WHERE vorname= '%s' AND name = '%s' AND strasse = '%s'", addslashes($vorname), addslashes($name), addslashes($strasse)); $result = mysql_query($query); ?>
Hierbei werden im Quellcode Platzhalter (Literale) eingesetzt, die anschließend in der gleichen Reihenfolge durch die angefügten Parameter ersetzt werden.
Ein %s bedeutet hierbei, dass an dieser Stelle ein String gesetzt wird. Es können auch Dezimalzahlen (%d) oder Zahlen vom Typ float (%f) übergeben werden. Zudem lassen sich neben anderen Angaben auch Ausrichtung und Länge einfügen, auf die ich hier aber nicht weiter eingehen werde (weiterführende Informationen).
Tun Sie sich (und eventuell anderen) einen Gefallen und schreiben Sie lesbaren Quellcode!



