Hoje estávamos treinando TDD e descobrimos o seguinte ponto de incompreensão.
A tarefa é a soma de retorno de entrada "1,2" dos números que é 3. O que escrevi (em C #) foi:
numbers = input.Split(',');
return int.Parse(numbers[0]) + int.Parse(numbers[1]); //task said we have two numbers and input is correct
Mas outros caras preferiram fazer de outra maneira. Primeiro, para a entrada "1,2", eles adicionaram o seguinte código:
if (input == "1,2")
return 3;
Em seguida, eles introduziram mais um teste para a entrada "4,5" e alteraram a implementação:
if (input == "1,2")
return 3;
else if (input == "4,5")
return 9;
E depois disso eles disseram "Ok, agora vemos o padrão" e implementaram o que eu fiz inicialmente.
Acho que a segunda abordagem se encaixa melhor na definição de TDD, mas ... devemos ser tão rigorosos quanto a isso? Para mim, não há problema em pular etapas triviais do bebê e combiná-las em "twinsteps" se tiver certeza de que não vou pular nada. Estou errado?
Atualizar. Cometi um erro ao não esclarecer que não era o primeiro teste. Já havia alguns testes, então "retorno 3" na verdade não era o código mais simples para satisfazer o requisito.