Dzisiaj trenowaliśmy TDD i znaleźliśmy następujący punkt nieporozumienia.
Zadanie polega na tym, aby wejściowa „1,2” zwróciła sumę liczb, która wynosi 3. To, co napisałem (w C #) to:
numbers = input.Split(',');
return int.Parse(numbers[0]) + int.Parse(numbers[1]); //task said we have two numbers and input is correct
Ale inni woleli robić to inaczej. Po pierwsze, dla danych wejściowych „1,2” dodali następujący kod:
if (input == "1,2")
return 3;
Następnie wprowadzili jeszcze jeden test dla danych wejściowych „4,5” i zmienili implementację:
if (input == "1,2")
return 3;
else if (input == "4,5")
return 9;
A potem powiedzieli „OK, teraz widzimy wzór” i wdrożyli to, co początkowo zrobiłem.
Myślę, że drugie podejście lepiej pasuje do definicji TDD, ale ... czy powinniśmy być wobec tego tak surowi? Dla mnie można pominąć trywialne kroki dziecka i połączyć je w „dwa kroki”, jeśli jestem pewien, że niczego nie pominę. Czy się mylę?
Aktualizacja. Popełniłem błąd, nie wyjaśniając, że to nie był pierwszy test. Było już kilka testów, więc „return 3” nie było tak naprawdę najprostszym fragmentem kodu spełniającym wymagania.