Heute haben wir TDD trainiert und dabei folgende Missverständnisse festgestellt.
Die Aufgabe ist für die Eingabe "1,2" eine Rückgabesumme von 3 Zahlen. Was ich geschrieben habe (in C #) war:
numbers = input.Split(',');
return int.Parse(numbers[0]) + int.Parse(numbers[1]); //task said we have two numbers and input is correct
Aber andere Leute zogen es vor, es anders zu machen. Zunächst wurde für die Eingabe "1,2" der folgende Code hinzugefügt:
if (input == "1,2")
return 3;
Dann führten sie einen weiteren Test für die Eingabe "4,5" ein und änderten die Implementierung:
if (input == "1,2")
return 3;
else if (input == "4,5")
return 9;
Und danach sagten sie "Okay, jetzt sehen wir das Muster" und setzten das um, was ich anfangs getan hatte.
Ich denke, der zweite Ansatz passt besser zur TDD-Definition, aber ... sollten wir so streng damit umgehen? Für mich ist es in Ordnung, kleine Schritte zu überspringen und sie zu "Doppelschritten" zu kombinieren, wenn ich mir sicher bin, dass ich nichts überspringen werde. Liege ich falsch?
Aktualisieren. Ich habe einen Fehler gemacht, indem ich nicht klargestellt habe, dass es nicht der erste Test war. Es gab bereits einige Tests, so dass "return 3" eigentlich nicht der einfachste Code war, um die Anforderung zu erfüllen.