BlogKontaktTagcloud

Trockener Code

Code muss trocken sein!

Ganz einfach weil er sonst beginnt zu stinken. Trockener Code ist die, nicht ganz korrekte, Übersetzung von "DRY Code", wobei DRY als Abkürzung für Programmierparadigma "Don't repeat yourself" steht. Würden sich alle daran halten hät es den Millenium-Bug nie gegeben (naja, gegeben hätte es ihn wohl schon. Aber wir hätten ihn auf einer Zeile behoben) und Software Engineering währe einiges einfacher.

Warum ich darauf komme? Ganz einfach! Weil ich mich in letzter Zeit wieder viel zu häufig mit nassem und triefendem Code abgeben musst. Repräsentatives Beispiel ist dabei die Applikation WikkiTikkiTavi, die ansonsten eine ganz tolles Wiki ist, ein wenig Vertrauenswürdiger als unser Schulwiki, da sie an mehr Orten eingesetzt wird, und wesentlich weniger kompliziert als Mediawiki , welches meiner Meinung nach gar nicht WikkiWikki ist.

Das besagte WikkiTikkiTavi hatte ich letztlich auf meiner Seite installiert. Irgendwann hat Mirko bemerkt das die Datumsangaben an einigen Stellen falsch sind, aber nicht an allen. Das Problem wurde dann mit ein wenig Glück bei Google gefunden und die Lösung gleich dazu.

  $time = mktime(substr($timestamp, 8, 2),  substr($timestamp, 10, 2),
substr($timestamp, 12, 2), substr($timestamp, 4, 2),
substr($timestamp, 6, 2), substr($timestamp, 0, 4));
Dieses Stück Code scheint nicht nur bei einigen Mysql-Versionen nicht zu funktioniere. Zudem war dieser Code, ganz untrocken, über die ganze Applikation verteilt und kopiert worden. So war an einigen Stellen bereits ein Workaround in die aktuelle Version eingeflossen an anderen liess man da ganze aber stehen.

Schlimm dabei ist nicht nur das dieser, fehlerhafte, Code über die ganze Anwendung verteilt wurde sondern auch das man das ganze mit
  $time = strtotime($timestamp);
oder mit
SELECT UNIX_TIMESTAMP(time);
in SQL viel einfacher und robuster hätte haben können, wenn man die Funktionen der Programmiersprache oder der darunterliegenden Schicht verwendet hätte.

Es gilt darum zwei Grundsätze einzuhalten: Eine Aufgabe wird nur von einem Stück Code erledigt und der Entwickler der Programmiersprache, der Libary oder der darunterliegenden Schicht schreibt immer besserer Code als ich, darum nutze ich diesen und schreib keinen eigenen. Wenn ich dann noch Unittests für meinen Code schreibe kann fast nichts mehr schief gehen.
Ähnliche Beiträge:
Endlich gelesen: The Pragmatic Programmer
Pragmatic programming with Andy Hunt (Teil II)
Pragmatic programming with Andy Hunt
Scaling is not about...
What's php like?
Comments (0)  Permalink

comments

add a comment

The Trackback URL to this comment is:
http://leo.freeflux.net/blog/plugin=trackback(268).xml

This blog is gravatar enabled.
Your email adress will never be published.
Comment spam will be deleted!

Name*
E-Mail
For Spammers Only
URL
Kommentar*
E-Mail Benachrichtigung bei neuen Kommentaren zu diesem Eintrag
Speichere meine Daten (braucht Cookies)