TDD и проектирование во время кодирования 20.12.2015

Несмотря на все достоинства TDD подхода к разработке, бывают ситуации, в которых TDD может быть не эффективным. TDD лёгок в применении только в тех случаях, когда программист четко представляет что именно ему нужно реализовать, а это возможно либо при разработке небольших классов, либо при достаточном предварительном проектировании разрабатываемой подсистемы.

В реальности отдельная стадия проектирования часто отсутствует и разработка архитектуры подсистемы ложится на плечи разработчика, непосредственно создающего её код. В таких случаях проектирование происходит итеративно и параллельно кодированию. При таком подходе, архитектура подсистемы может заметно эволюционировать в процессе разработки, что в свою очередь сильно сказывается как на самом характере составляющих подсистему модулей, так и на их интерфейсах.

Разработка по TDD в такой ситуации делает необходимым постоянный рефакторинг не только кода подсистемы, но и кода тестов. Очевидно, что в таких случаях подход по TDD не является эффективным — программист тратит лишние время, силы и нервы. Именно поэтому, Переходить к разработке по TDD лучше только после проектирования системы, а в нашем примере после создания каркаса проекта и согласования интерфейсов внутренних составляющих. По завершению данной стадии подсистема уже может обладать значительным функционалом, который требуется покрыть тестами пост фактум. При добавлении кода реализующего новый и уточняющего старый функционал уже можно использовать TDD.

by 20.12.2015