Die Flagge des Marasek

Dekostreifen

English

Aktuell Texte Der Comic Impressum Kalender Suche PHP-Klassen Container-Wizard main.s21

Kategorien

Buch
Computer
Computerspiele
Film
Geschichte
Gesellschaft
Idee
Kunst
Natur
Persönlich
Politik
Programmieren
Religion & Philosophie
Weblog
Weltpolitik
Weltsicht
{{login}}

Zen oder die Kunst, eine Webseite zu schreiben

Permalink
Vorheriger: Der "Mittelaltermantel"Nächster: 40 Jahre Farbfernsehen; 15 Jahre VGA
Eingeordnet in: Programmieren

Gerade habe ich mal wieder ein paar Klassen umgeschrieben. Zu was man alles Zeit hat, wenn man ein verbitterter Misanthrop ist...
Das hat natürlich zur Folge gehabt, dass die Hälfte dieser Webseite nicht mehr funktioniert hat. Ich halte nicht sonderlich viel von "Abwärtskompatibilität". Zumindest bei meinen eigenen Seiten.

Das Problem ist, eine Klasse zu programmieren und sie gleichzeitig zu testen; entwickle ich sie vollends im leeren Raum und setze sie erst ein, wenn sie "perfekt" ist, merke ich meist schnell, dass sie alles andere als eben dies ist, ich tatsächlich alle möglichen Sonderfälle übersehen habe und das Ding in der Praxis viel zu kompliziert zu bedienen ist, weil die Grundidee doch etwas zu abgehoben war. So geschehen etwa mit meiner "Select"-Klasse für SQL-Abfragen, die es zunächst erforderte, jede Spalte als Objekt zu übergeben. Tipp Dich zu Tode.
Die andere Möglichkeit ist die, Klassen so schnell wie möglich einzusetzen. Das ist mein häufigeres Vorgehen: aufs Schlachtfeld damit. Der Todesstern II war schliesslich auch noch nicht fertig gebaut, hauptsache, der Superlaser sowie das Feuerleitsystem ist funktionsbereit. Im Einsatz treten unsinnige Konzepte und unerfüllte Bedürfnisse schnell zu Tage.

Was allerdings auch den entschiedenen Nachteil hat, dass man auf dieser Seite vermutlich mehr "Uncaught Exception in Line xxx" lesen kann als anderswo. Besonders nett sind Fehler, die nicht offen zu Tage treten; etwa jener, bei der alle Texte auf "noindex, nofollow" standen oder man einen Critical Error kassiert hat, wenn man von einem externen Link auf meine Seite gekommen ist (wer testet das schon).

Allerdings liegt der Fehler dann eher darin, dass ich mir manchmal nachlässigerweise nicht die Mühe mache, alle Seiten durchzuklicken und verschiedene Zustände zu überprüfen; sehe ich den Fehler, ist er nämlich schnell gefunden. "Datenkapselung" und "Design by Contract" sind nicht nur leere Versprechen oder cool klingene Buzzwords (wie manch andere Sachen). Wenn ich an die Zeiten zurückdenke, in denen ich noch eher mit Arrays programmiert habe, in denen Werte sassen, die ich von Funktion zu Funktion gereicht habe, oder gar globals in Funktionen oder Methoden wird mir anders - da ist dann gerade mal ein Notice Hinweis auf einen Fehler, wenn es gut läuft. Wenn es schlecht läuft, ist irgendwas einfach "kaputt" ohne weiteren Anhaltspunkt, weil etwa eine Variable den falschen Typ hat.
Ich halte es mittlerweile recht streng mit den OOP-Prinzipien, was sich in solchen Situationen auszahlt: eine schöne Fehlermeldung, welche Methode fehlt oder welche Methode welches Objekt als Variable benutzt oder welche Methode einer abgeänderten abstrakten Klasse oder eines Interface noch nicht existiert. Es erscheint zwar manchmal etwas stupide, fünf Getter/Setter-Paare zu schreiben oder ein läppisches Interface mit drei Funktionen zu definieren, aber es zahlt sich aus, aus, aus.
Ich weiss, manche Leute stellen sich gerne hin und sagen, man muss pragmatisch bleiben, manchmal kann man die Regeln nicht einhalten, das ist unökonomisch, von der Uni kommen nur weltfremde Theoretiker usw usf. Das klingt reichlich cool, nach welterfahrenem Cowboy; und manchmal ist Pragmatismus auch angesagt. Aber man muss die Regeln nichts desto trotz beherrschen, um sie brechen zu können. Es kann sinnvoll sein, mal eine überschaubare Aufgabe, die man mit 100 Zeilen imperativem Code lösen würde, äusserst sklavisch OOP zu erledigen, um ein Gefühl dafür zu bekommen.
Zwangsläufig habe ich mich schon in beide Richtungen verschätzt; ich hatte eine Blockade, weil ich noch vier grosse Teilbereiche der Klassenbibliothek schreiben und so zusammenfügen wollte, dass meine Aufgabe sich quasi nebenher erledigt. Das kann dann dauern. Oder ich habe "auf die Schnelle" eine Klasse oder was prozedurales zusammengehackt, dass ich dann noch in drei anderen Projekten gebrauchen konnte, es auf Grund seiner Spezialisierung aber jeweils anpassen musste. Je allgemeiner und besser wiederverwendbar eine Klasse ist, desto wahrscheinlicher ist allerdings auch der Umstand, dass irgendjemand mit wenig Ahnung und viel Einfluss von 100 Formularen das 73. in zartrosa mit hellen Punkten haben will. Entwicklernöte.

Wie dem auch sei, diese Seite ist wie modifizierte, liebevoll restaurierte Harley, an der jedes Wochenende geschraubt wird, die aber nie fahren darf. Nun gut, bei dem heutigen Update dürfte alles soweit funktionieren. Selbst die selbstgeschriebene Suchfunktion mit eigenem Index.

Gentlemen, please start your engines...

Kommentieren

Bitte beachten: Kommentare sind nicht sofort sichtbar, sondern werden erst nach einer kurzen Prüfung freigegeben, sofern keine rechtliche Beanstandung vorliegt.
Rechtlich bedenkliche Inhalte werden entweder entschärft oder nicht veröffentlicht.

* Titel  
* Nickname  
* Kommentar