Сегодня мы тренировали TDD и обнаружили следующую точку недопонимания.
Задача для ввода «1,2» - возвращаемая сумма чисел, равная 3. Что я написал (в C #):
numbers = input.Split(',');
return int.Parse(numbers[0]) + int.Parse(numbers[1]); //task said we have two numbers and input is correct
Но другие парни предпочитали делать это по-другому. Сначала для ввода «1,2» добавили следующий код:
if (input == "1,2")
return 3;
Затем они ввели еще один тест для ввода «4,5» и изменили реализацию:
if (input == "1,2")
return 3;
else if (input == "4,5")
return 9;
И после этого они сказали: «Хорошо, теперь мы видим образец» и реализовали то, что я первоначально сделал.
Я думаю, что второй подход лучше соответствует определению TDD, но ... мы должны быть настолько строги в этом? Для меня это нормально пропустить тривиальные шаги ребенка и объединить их в «двойные шаги», если я уверен, что я ничего не пропущу. Я ошибся?
Обновить. Я сделал ошибку, не уточнив, что это был не первый тест. Уже было несколько тестов, поэтому «return 3» на самом деле был не самым простым фрагментом кода, удовлетворяющим требованию.