Hoy estábamos entrenando TDD y encontramos el siguiente punto de malentendido.
La tarea es para la suma de números de retorno de entrada "1,2" que es 3. Lo que he escrito (en C #) fue:
numbers = input.Split(',');
return int.Parse(numbers[0]) + int.Parse(numbers[1]); //task said we have two numbers and input is correct
Pero otros muchachos prefirieron hacerlo de otra manera. Primero, para la entrada "1,2" agregaron el siguiente código:
if (input == "1,2")
return 3;
Luego introdujeron una prueba más para la entrada "4,5" y cambiaron la implementación:
if (input == "1,2")
return 3;
else if (input == "4,5")
return 9;
Y después de eso dijeron "Está bien, ahora vemos el patrón" e implementaron lo que hice inicialmente.
Creo que el segundo enfoque se ajusta mejor a la definición de TDD pero ... ¿deberíamos ser tan estrictos al respecto? Para mí está bien omitir pequeños pasos triviales y combinarlos en "pasos gemelos" si estoy lo suficientemente seguro como para no omitir nada. ¿Me equivoco?
Actualizar. He cometido un error al no aclarar que no era la primera prueba. Ya había algunas pruebas, por lo que "return 3" en realidad no era el código más simple para satisfacer el requisito.