am 10. Dezember 2009
Eigentlich wollte ich ja heute ein wenig über ein weiteres Caching Buzzword philosophieren. Stale-on-revalidate wäre es gewesen. Da wir aber in den gestrigen Kommentaren schon genug darüber gesprochen haben, habe ich mich entschieden den Tag doch einem anderem Thema zu widmen. Ok, vielleicht werde ich da Thema jetzt nicht gänzlich ausschöpfen, aber ein paar Gedanken zum test first Ansatz möchte ich heute doch noch los werden.
Was sich hinter test first versteckt ist einfach. Bevor ich meine Schnittstelle mit Leben, also dem Code fülle, schreibe ich meine Tests. Das geht natürlich nur deshalb, weil man vor der ersten Zeile der konkreten Implementierung schon alle nötigen Schnittstellen fertig hat. Und genau da haben wir schon den Knackpunkt. Wir müssen uns vorher über die saubere Beschaffenheit unserer Interfaces kümmern. Wir fangen nicht einfach an drauf los zu programmieren. Und meiner Erfahrung nach ist das auch gut so, denn oft fällt einem später ein, dass man das gar nicht so machen kann. Hätte man doch schon am Anfang bis zum Ende gedacht. Ok, das ist also der erste große Bonuspunkt des “frühzeitigen” Testen: wohldefinierte Schnittstellen.
Das reicht natürlich nicht. Wenn ich im vornherein schon Gedanken darüber mache, dass ich den Code, den ich da verbreche auch noch testen muss, werde ich die Methoden schön klein halten. Schön klein bedeutet ja schließlich eine geringe Komplexität und damit eine einfache Testbarkeit. Den “big-ball-of-mud” wird man so wohl kaum produzieren können, denn wer schreibt schon gerne hunderte von Tests im voraus, wenn es auch anders geht. Zweiter Vorteil ist also, dass man gleich so programmiert, dass der Code testbar ist. Und testbarer Code ist was wunderbares.
So das waren jetzt klare Vorteile für das Schreiben der Test vor Vorfeld. Gibt bestimmt noch viele mehr, aber die hebe ich mir für den ein oder anderen neuen Beitrag auf.