"TDD By Example Kent Beck". Чистый код, который работает.
- Новый код пишется только после того, как будет написан автоматический тест, завершающйся неудачей.
- Любое дублирование устраняется.
- Красный - напишите небольшой тест, который не работает, а возможно даже не компилируется
- Зеленый - заставьте тест работать как можно быстрее, при этом не думайте о правильности дизайна и о чистоте кода. напишите ровно столько кода, чтобы тест сработал.
- Рефакторинг - устраните из написанного кода любое дублирование.
- (Красный) Напишите тес. Представьте, как будет реализована в коде воображаемая вами операция. Продумав ее интерфейс, опишите все элементы, которые, как вам кажется, понадобятся.
- (Зеленый) Заставьте тест работать. первоочередная задача - получить зеленую полоску. Если напрашивается простое и элегантное решение, используйте его.
- (Рефакторинг) Улучшите решение. Теперь, когда система работает, избавьтесь от прошлых огрехов. Устраните дублирование, которое вы внесли, и быстро сделайте так, чтобы полоска снова стала зеленой.
Проблема с кодом и тестами заключается не в дублировании, а в зависимости между кодом и тестами. Вы не можете изменить одно, не изменив другого. Зависимость является проблемой, а дублирование - ее симптомом. Чаще всего дублирование проявляется в виде дублирования логики. Устранение дублирования в программах устраняет и зависимость. Для этого и существует второе правило TDD. Устраняя дублирование перед написанием нового теста, мы увеличиваем наши шансы сделать его успешном внеся всего одно изменение.