Brauchen wir Frameworks

Brauchen wir Frameworks

Ich bin absolut kein Fan von Frameworks. Ich bin der Meinung, dass Frameworks Systeme nur unnötig aufblähen und lediglich erfunden wurden, um sich möglichst simpel aus Programmbibliotheken anderer Leute zu bedienen, damit man selbst nichts mehr coden muss. Klar, die Vorteile von Frameworks liegen auf der Hand. Man muss kein einfaches Login-Skript mehr schreiben. Man muss sich nicht mehr zwangsläufig um die Validierung des Inputs kümmern, man kann mal eben schnell eine Library per composer oder npm nachinstallieren und damit sein Programm einfach um einen Ajax-Fileuploader erweitern oder die Amazon S3-Services nutzen.

Ich finde das albern. Es nervt mich wirklich.

Doch wirtschaftlich gesehen, sind Frameworks toll. Natürlich ist es einfacher, eine Klasse zu inkludieren, die aus Youtube-Links direkt das Thumbnail rausholt, als so etwas selbst zu programmieren. Wobei das sogar noch einfach ist. oEmbed sei Dank. Aber auch dafür kann man eine Klasse inkludieren. Irgendwer hat das schließlich ja schon einmal programmiert. Wenn man sich für ein Framework entscheidet, begibt man sich in eine gewisse Abhängigkeit. Wenn urplötzlich das Framework nicht mehr weiterentwickelt wird, steht das schöne, große Webprojekt ohne Fundament da und keiner ist in der Lage, das weiter zu pflegen. Viel schlimmer ist, wenn das Framework selbst eine große Sicherheitslücke aufweist und dein Projekt so bekannt ist, dass es der erste Honeypot für abermillionen von Skriptkiddies wird.

Nicht zuletzt ist es ein Problem, wenn du dich auf Basisfunktionen des Frameworks verlässt, die irgendwann alle auf Deprecated (veraltet) stehen und du dann nicht einfach so refaktorieren kannst, weil die Funktion durch eine neue Methode ausgetauscht wurde, deren Response komplett anders aufgebaut ist.

Wenn man sich ein Framework aussucht, sollte man also nicht davon ausgehen, dass das Framework so gut bleibt. Wenn man von Version 2 auf Version 3 des Frameworks updaten will, muss man die Zeit, die man vorher eingespart hat, eventuell wieder nachholen. Wenn man anschließend merkt, dass alle neuen Pakete mit der Version des Frameworks, auf der man selbst entwickelt hat, nicht mehr funktionieren, steht man auch wieder doof da.

Doch was sind die Alternativen? Kann man große Webprojekte ohne ein Framework umsetzen? Verliert man dadurch nicht unglaublich viel Zeit und muss hoch kalkulieren?

Ich glaube nicht, dass man viel Zeit verliert, wenn man für jedes Projekt das „Rad neu erfindet“. Frameworks sind auch nur ein Aufguss auf die Programmiersprache, die man schon gut kann und mit der man bestimmte Sachen schon tausende Male programmiert hat. Die Flexibilität eines selbstgeskripteten Codes und insbesondere die Geschwindigkeit des Codes im Vergleich zu einer aufgeblasenen Framework-Skripthölle ist konkurrenzlos gut. Man sollte bestimmte Funktionen, die sowieso immer wieder in jedem Projekt vorkommen, selbst verstehen und selbst mal entwickelt haben. Das beste und einfachste Beispiel ist ein simples Login-Skript. Du schreibst einfach nur ein Programm, dass Username und Passwort-Hash mit einer Datenbank vergleicht und setzt ein $_SESSION-Cookie, wenn der Wert stimmt. Das ist in einfachstem PHP ein Skript über 10 Zeilen, maximal. Das gleiche gilt auch für so Dinge wie ein CMS-Modul oder eine Fehlerseite. Das haben wir alle irgendwann irgendwo schon per Hand geschrieben.

Ich möchte darauf hinaus, dass man sich natürlich 30 Megabyte PHP und weitere 2 Megabyte Javascript installieren kann, um eine simple Website zu realisieren. Man kann allerdings auch PHP verinnerlichen und so sinnvolle Funktionen wie Autoloading verwenden, um die Programmteile zu laden, die man für bestimmte Funktionen braucht. Nehmen wir mal als Beispiel dieses Blog hier. Ich habe oben in der URL folgendes stehen:

https://www.trancefish.de/blog/show/coding/

<?php
// url ist alles das, was hinter www.trancefish.de steht
function create_loader($url) {
    $doStuff = explode('/',$url);
    $klasse = $doStuff[0];
    $method = $doStuff[1];
    // Den Rest kicken wir
    unset($doStuff[0]);
    unset($doStuff[1]);
    $params = array_values($doStuff);
    // Prüfung, ob ich diese Klasse überhaupt aufrufen darf
    if(in_array($whitelist,$klasse)) {
        $obj = new $klasse;
        if(method_exists($method)) {
            $obj->$method($params);
        }
        else {
            launch404();exit();    // Methode gibt's nicht. Byebye
        }

    }
    else {
        launch404();    // Gibt's nicht, generiere eine Fehlerseite
        exit();
    }
}
?>

Das Skript hier wurde von mir so realisiert, dass die URL geprüft wird. Blog ist die Klasse, die automatisch geladen wird und show ist die Methode. Coding ist in diesem Fall ein Filter, der mir nur Blogposts aus der Kategorie Coding ausgibt. Stark vereinfacht steht im Programmcode also folgendes:Das erschlägt das Routing, man kann in den Klassen die Methoden aufrufen und die Methoden selbst machen den Rest. Das ist total simpel und innerhalb der Klassen kann ich ohne Probleme auf die anderen Klassen und Methoden zugreifen.

Das gleiche gilt für Javascript-Frameworks. Ich sehe immer häufiger Leute, die jQuery laden, nur um einen DIV-Layer auszublenden. Gleichzeitig beschweren sich diese Leute über die Performance ihrer Webseite. Google meckert, weil die Ladezeit so hoch ist und der Kunde meckert, weil er in den Suchergebnissen nicht gelistet wird. Ein einfaches: document.getElementByID('blabla') mit entsprechenden Methodenaufrufen macht genau dasselbe.

Versteht mich bitte nicht komplett falsch. Ich sage ja nicht, dass Frameworks grundsätzlich falsch sind. Ich sage lediglich, dass man sich vielleicht genau überlegen sollte, ob man sich in die Abhängigkeit eines Fremdframeworks gibt oder seinen Code so schreibt, dass man ihn in eigenen Projekten immer wieder verwenden kann. Das bedeutet auch, dass man die Programmiersprache, die man verwendet, wirklich gut kennen sollte. Sowieso gilt: Lerne erst PHP, bevor du Symfony oder Laravel lernst.


Getagged unter: coding,
Leider hat hier noch keiner seinen Senf zum Thema abgegeben. Sei du doch der erste. Oder die erste. Oder das letzte.
Unterstütze mich:

Willst Du meine Arbeit unterstützen? Sehr schön. Dann rufe doch die folgende Seite auf:
Support Trancefish!

Mixcloud:
Anzeige:
Ähnliche Posts:
login