WTFs im eigenen Code
Als erstes möchte ich euch für die vielen Kommentare gestern danken. Dafür, dass ihr mal die schreibfaulste Lesergemeinde wart ist da doch ganz schön viel zusammen gekommen. Vielen Dank dafür.
Jetzt aber mal wieder, wie gewünscht, ein kleines WTF. Aber nicht wie üblich über PHP, sondern eher über alten Code, den man in größeren Projekten nun mal so findet. Sebastian, mein Ex-Kollege, hatte zwar schon mal drüber erzählt, aber vielleicht kennt der ein oder andere seinen Blog ja nicht.
Was ich aber vorweg sagen muss, ist, dass unser neuer Code sauber ist. Dank Codereviews und Unittests ist er auch stabil. Aus diesem Grund habe ich auch kein schlechtes Gewissen, mal ein wenig zu lästern. Aber wieder zum eigentlichen Punkt.
Ich bin mal wieder über eine nette Methode gestoßen. Sollte man einen beschreibenden Funktionsnamen wählen, so müsste sie „getUserIdByUserId“ heißen. Ganz genau, ein wunderbarer selbstgebauter „What the fuck“. Die Methode nimmt also eine User ID, erstellt darauf ein Userobjekt, lädt es aus der Datenbank, holt sich von dem Objekt die ID und gibt sie zurück. Genial.
Nennt man so etwas eine softwaretechnische Arbeitsbeschaffungsmaßnahme? Ich weiß es nicht. Ich glaube wir werden es auch nicht Refaktorisieren, da es einfach Spaß macht ab und zu diese Stelle wieder neu zu entdecken.
Da fällt mir gerade auch noch ein kleines Highlight aus meiner Zeit im Fraunhofer Institut ein. Wir hatten ein System auf einen neuen Rechner portiert, der einfach mehr „Bums“ hatte. Die klugen Entwickler, die vor mir entwickelt hatten mussten das Programm irgendwie runterbremsen, da die Mechanik, die angeschlossen war nicht mit Geschwindigkeit zurecht kamen. Was haben die Helden gemacht? Man möchte meinen, dass ein sleep oder ähnliches hier passend wäre. Aber nein! Man kann ja einfach bis 1000000 zählen in einer For Schleife.
Ist schon herrlich, was man mit 10 Jahren Entwicklungserfahrung alles gesehen hat.
„getUserIdById“ klingt nach einer eigenartigen Art und Weise zu prüfen, ob eine ID existiert 😉
Ja, das ist definitiv eine der viele Zeilen aus unserem Projekt, die mir im Gedächtnis bleiben werden 🙂
Fällt mir gerade auch noch dazu ein: wenn man so durch irgendwelche Foren und Seiten stöbert, auf denen Programmieranfänger Hilfe finden, lesen sich interessanterweise sehr oft solche Sachen wie „wie kann mein Programm nichts machen“, wo dann solche komischen Sachen herauskommen wie:
if( $condition == true )
foo( );
else
doNothing( );
function doNothing( ) {
// Do Nothing
}
Das mit der for-Schleife war früher (gaaaaaanz früher) Gang und Gäbe. In BASIC-Listings, die ich noch von meinem Schneider CPC 464 habe, auf dem ich mir Programmieren beigebracht habe, wurde häufig so ‚gewartet‘. Vielleicht war da noch ein Programmierer der ganz alten Schule am Werk.
Man entdeckt irgendwann immer etwas über das man sich im Nachhinein nur wundern kann, was ja auch mit zunehmendem KnowHow zu tun hat. Meine persönlich schönste Entdeckung stammt aus einem CMS-System in dem folgende Zuweisung des Wertes 1 vorgenommen wird:
if((int)$foobar){
$foobar = $foobar/$foobar;
}
Naja das hochzählen in der For-Schleife war früher zu Basic-Zeiten nicht unüblich 🙂
Das mit der for-Schleife erinnert mich an http://thedailywtf.com/Comments/The-Speedup-Loop.aspx 🙂
Ich lasse meinen TI-Taschenrechner immer die Wurzel auf Kommazahlen ausrechnen, weil es kein Sleep gibt – blöd nur, dass dann schon nach wenigen Stunden die Batterie leer ist ^^
Eins meiner absoluten WTF Highlights ist folgender Code ( stamm nicht von mir !!!! ).
…..
$count = 0;
foreach( $someArray as $key=>$val )
{
$count = $count + 1;
}
…..
Es wurde die Anzahl der Elemente in einem Array ermittelt 😀
Ich habe hier noch ein Projekt aus 1998 auf der Platte in meinem Archiv, das ist ein einziges WTF! 😉
Einer meiner persönlichen Highlights war eine automatische Weiterleitung, die wir beim Provider in Auftrag gegeben haben. Als wir ca. ein Jahr später mit der Seite auf einen anderen Server umgezogen sind, hab ich mir die Weiterleitung mal angesehen, hier der Code aus der PHP Datei:
#*********************************************************
# URL-Redirector
#*********************************************************
echo ‚
TRANSFER…
‚;
Fazit: Warum direkt in einer Sprache schreiben wenn man nicht gleich mehrere brauchen kann 😉
hat mit dem code irgendwie nicht geklappt, also noch ein Versuch:
#*********************************************************
# URL-Redirector
#*********************************************************
echo ‚<!DOCTYPE HTML PUBLIC „-//W3C//DTD HTML 4.01 Transitional//EN“>
<html>
<head>
<title>TRANSFER…</title>
<meta http-equiv=“Content-Type“ content=“text/html; charset=iso-8859-1″>
</head>
<body>
<script language=“JavaScript1.2″>
<!–
function redirect(URLStr) { location = URLStr; }
redirect(„http://www.domain.xy/index.php?id=login“)
//–>
</script>
</body>
</html>
‚;
Mein Lieblings-WTF (tatsächlich in einem Projekt gefunden):
if (1 == 2) {
// hier standen jetzt etwa 20 Zeilen Code
} elseif (1 == 1) {
// hier wieder ein paar Zeilen Code
}