У своєму теперішньому проекті (грі, на C ++) я вирішив, що під час розробки я буду використовувати тестово керовану розробку на 100%.
Щодо якості коду, це було чудово. Мій код ніколи не був настільки добре розроблений або настільки без помилок. Я не переслідую під час перегляду коду, про який писав рік тому на початку проекту, і я набув набагато кращого розуміння того, як структурувати речі, не тільки для того, щоб їх було легше перевірити, але щоб було простіше в застосуванні та використанні .
Однак ... минув рік, як я розпочав проект. Зрозуміло, я можу працювати над цим лише у вільний час, але TDD все ще значно уповільнює мене порівняно з тим, до чого я звик. Я читав, що повільна швидкість розвитку з часом стає кращою, і я, безумовно, придумую тести набагато легше, ніж раніше, але я працюю на цьому вже рік, і я все ще працюю з темпом равлики.
Кожного разу, коли я замислююся над наступним кроком, який потребує роботи, я мушу щоразу зупинятися і думати, як би я написав для нього тест, щоб дозволити мені написати фактичний код. Я інколи застрягаю годинами, точно знаючи, який код я хочу написати, але не знаючи, як його тонко розбити, щоб повністю покрити його тестами. В іншому випадку я швидко придумаю десяток тестів і витрачу годину на написання тестів, щоб висвітлити крихітний фрагмент реального коду, який би інакше зайняв би кілька хвилин, щоб написати.
Або, закінчивши 50-й тест, щоб охопити певну сутність у грі та всі аспекти її створення та використання, я переглядаю свій список справ і бачу, що наступна сутність повинна бути закодована, і в жаху при думці писати ще 50 подібних тестів для його впровадження.
Дійшло до того, що, переглядаючи прогрес минулого року, я розглядаю можливість відмовитися від TDD заради "завершення проклятого проекту". Однак я відмовляюся від якості коду, що поставляється разом із нею. Я боюся, що якщо я перестану писати тести, то я вислідую від звички робити код таким модульним і перевіряючим.
Чи я можу зробити щось не так, щоб все ще бути таким повільним? Чи існують альтернативи, які прискорюють продуктивність, не втрачаючи при цьому повністю переваг? TAD? Менше тестового покриття? Як інші люди виживають TDD, не вбиваючи всієї продуктивності та мотивації?