Aujourd’hui, nous formions le TDD et avons constaté le malentendu suivant.
La tâche consiste pour l'entrée "1,2" à renvoyer la somme de nombres qui est 3. Ce que j'ai écrit (en C #) était:
numbers = input.Split(',');
return int.Parse(numbers[0]) + int.Parse(numbers[1]); //task said we have two numbers and input is correct
Mais d'autres gars ont préféré le faire autrement. Tout d'abord, pour l'entrée "1,2", ils ont ajouté le code suivant:
if (input == "1,2")
return 3;
Ils ont ensuite introduit un test supplémentaire pour l'entrée "4,5" et ont modifié la mise en oeuvre:
if (input == "1,2")
return 3;
else if (input == "4,5")
return 9;
Et après cela, ils ont dit "D'accord, maintenant nous voyons le schéma" et ont mis en œuvre ce que j'avais initialement fait.
Je pense que la seconde approche correspond mieux à la définition de TDD mais ... devrions-nous être si strict à ce sujet? Pour moi, il est normal de sauter des pas de bébé triviaux et de les combiner en "jumelages" si je suis suffisamment sûr pour ne rien rater. Ai-je tort?
Mise à jour. J'ai commis une erreur en ne clarifiant pas que ce n'était pas le premier test. Il y avait déjà quelques tests, donc "return 3" n'était en réalité pas le code le plus simple pour satisfaire à l'exigence.