Lesbaren Code schreiben

Lesbaren Code schreiben

Immer mal wieder wird behauptet, PHP sei sowas von tot und schlecht und sowieso für nix mehr zu gebrauchen. Mit solchen Leuten diskutiere ich nach ungefähr 20 Jahren PHP-Webentwicklung gar nicht mehr, denn solche Leute wollen nur trollen und haben keine Ahnung von der richtigen Welt. Klar haben viele andere Sprachen bessere Logiken und sind vermutlich auch (wegen besserer "Grundstandards") sicherer, aber PHP hat den Vorteil, dass es einfach funktioniert und überall läuft. PHP kriegst du bei jedem Wald- und Wiesenhoster dazu, während andere Sprachen meistens nur für viel Geld installiert werden.

Nicht umsonst nutzen Facebook und Wikipedia PHP als Grundlage. Neben Google sind diese beiden Websites die größten Websites der Welt.

Daher befasst sich dieser Artikel nicht mit Trollen, sondern damit, wie man das beste aus seiner Entwicklungsumgebung herausholt und wie man vernünftige PHP-Anwendungen schreibt.

Das Betriebssystem

PHP läuft grundsätzlich unter jedem aktuellen Desktop-Betriebssystem, daher ist es völlig egal, ob Du Windows oder Linux benutzen möchtest. Da fast alle Webspace-Anbieter mit Linux arbeiten, könnte die Entwicklung unter Linux favorisiert werden. Tatsächlich ist das aber - fast immer - egal.

Linux

Linux als Grundlage für PHP hat, wie gesagt, den Vorteil, dass du ziemlich nah an dem programmierst, was im “echten Leben” auf dich zukommt. Außerdem gewöhnst du dir gleich die bessere Beschreibung von Pfaden an. Der Backslash wird im Filesystem nicht genutzt, der Slash ist das Maß aller Dinge.

PHP-Erweiterungen oder Anpassungen lassen sich sehr elegant über die Shell installieren und der Update-Prozess funktioniert auch so kinderleicht. Es gibt Linux-Projekte, die es dir erlauben, verschiedene PHP-Versionen parallel zu installieren und zu testen.

Windows

Die Installation von PHP, MariaDB und Apache übernimmt Xampp, sodass du nach dem Setup eine komplett lauffähige Umgebung für dein Skripting hast. Im Ordner C: kannst du einfach so neue Verzeichnisse erstellen und das komplexe Rechtesystem von Linux fällt hier komplett weg.

Docker

Docker ist irgendwo zwischen beiden Welten. Du kannst dir Dockercontainer erstellen, das sind quasi virtuelle Maschinen, die exakt auf dein Doing optimiert sind.

Die IDE

Heute muss man eine IDE haben. PHP-Projekte sind heute viel mehr, als nur schnödes echo und einfaches $_SESSION auswerten. PHP-Projekte werden heutzutage grundsätzlich als erweiterbare Baukästen entwickelt, die wiederum von anderen Baukästen abhängig sind: So funktioniert Laravel nicht ohne Symfony und beides verwendet Monolog und das wiederum verwendet wieder andere Codes. Da den Überblick zu behalten, setzt eine IDE voraus. Und es gibt viele, viele IDEs, die ich gar nicht im Detail vorstellen kann. Die meist genutzten sind PHPStorm, Eclipse PDT und natürlich Netbeans. Mit Hilfe von vielen Plugins kann man auch VSCODE sehr gut nutzen und kleinere IDEs wie PHPDesigner oder Codelobster haben allesamt ihre Daseinsberechtigung.

Die meisten IDEs laufen entweder über 30 Tage ohne Funktionsbeschränkung oder sind, wie im Fall von Netbeans, Visual Studio Code oder auch Atom Editor eh länger oder gar kostenlos nutzbar.

Es gibt nicht “die geilste IDE”. Viele meiner Kollegen schwören auf PHPStorm, ich finde dieses Programm allerdings völlig überladen. Ich selbst nutze einen Hybriden aus Netbeans und Visual Studio Code. Ich nutze Code und Netbeans und bin unglaublich glücklich damit. Aber das muss jeder für sich selbst entscheiden. Ausprobieren geht immer.

Qualität

Nirgendwo wirst du beschisseneren Code finden, als in PHP-Projekten. PHP macht es einem einfach viel zu einfach, beschissenen Code zu schreiben. Konstruktionen wie dieses hier sind gültiges PHP, aber ich möchte da immer kotzen:

<?php
$x = "1";
$y = "2";
$z = $x+$y;

Fies? Eklig? Ja!. Erlaubt? Ja, leider auch.

Mess Detector, Codesniffer etc.

Wann immer möglich, versuche deiner IDE einen “Mess Detector” zu geben. Diese Skripte beheben zwar keine Bugs, aber sie achten darauf, dass dein Code zumindest nicht von Anfang an zu einem Knäuel Müll wird. Codefixer wie phpcs sagen dir, wo du fehlende Kommentarblöcke (“Annotation”) hinterlegen musst. Teilweise können solche Programme den Code auch schöner einrücken und somit lesbarer gestalten. Da diese Skripte deine PHP-Skripte auch linten, sind zumindest grobe Syntax-Fehler schon mal ausgeschlossen. Deine IDE zeigt dir im Idealfall auch an, wo du Mist stehen hast. Versuche, deine Codes so zu schreiben, damit die Automationstools fast nichts mehr zu meckern haben. Das erleichtert deinen Programmiererkollegen das Lesen deines Codes.

Coding Standards

Über Coding-Standards lässt sich hervorragend streiten. Die einen halten Dinge wie PHP-FIG für Heilsbringer und finden es absolut wunderbar, dass PHP einen generellen Standard für Codes erhält. Andere halten diese Standards für Quatsch und wieder andere gelten als Wegbereiter und haben dann aber beschlossen, die FIG-Standards nicht mehr so richtig gut zu finden. Ich selbst bin Fan von der Mitte.

Ein paar Dinge sollte man aber auf jedenfall beherzigen...

Sprechende Variablennamen, Magic Numbers etc

Wenn deine Variable für den Benutzer steht, nenne die Variable auch $Benutzer oder meinetwegen auch $User. Aber kürze den Variablennamen nicht ab, deinem PHP-Interpreter oder sogar auch deinem C-Kompiler ist es völlig egal, wie lang ein Variablenname ist. Ein Variable ist der Teil der Programmierung, bei dem man nie weiß, was die Variable eigentlich macht. Also beschreibe die Variable kurz und knackig.

Wenn du Variablen mit festen Werten vergleichen willst: Beispielsweise, ob der $User einen bestimmten Wert an Postings gemacht hat und damit als "Superuser" gilt, vergleiche nicht $Userposts >= 100 sondern schreibe diese wichtige Zahl 100 in eine sprechende Konstante: $Userposts >= SUPERUSER_MINIMAL_POSTS. So kann jeder sehen, wofür die Zahl gedacht ist.

Außerdem erleichtert dir die Konstante die Änderung, falls Minimale-Posts doch irgendwann mal mehr sein sollen.

Sprechende Funktionen und Klassen

Eine Klasse simuliert einen Gruppe von Gegenstanden aus der echten Welt. Autos sind eine Klasse von Geräten mit ein paar Reifen, einer Farbe und diversen Funktionen, wie zum Beispiel fahren, tanken und blinken. Wenn du also ein Programm über Autos schreibst, sollte deine Klasse tatsächlich auch "Auto" heissen.


        <?php
        class Auto
        {
            private $gefahrene_kilometer;
            public $farbe;


            public function __construct() {
                $this->gefahrene_kilometer = 0;
                $this->farbe = 'Nicht Lackiert';
            }

            public function fahre($kilometer) {
                $this->gefahrene_kilometer += $kilometer;
            }

            private function kilometerstand() {
                return $this->gefahrene_kilometer;
            }
        }
    

Fazit

Ich kann und will hier gar nicht erst erklären, wie PHP funktioniert. An Anfänger richtet sich das letztendlich ja auch nicht. Es geht mir viel mehr darum, euch zu zeigen, wie ihr euren Mitprogrammierern das Leben leichter macht.

Autor: Marcel Schindler
Datum: 08.07.2019

Blog weiter lesen