Я программист-контрактник с большим опытом. Я привык к тому, что меня нанял клиент, чтобы войти и сделать программный проект той или иной формы самостоятельно, как правило, из ничего. Это означает чистый сланц, почти каждый раз. Я могу принести библиотеки, которые я разработал, чтобы быстро начать, но они всегда являются необязательными. (и зависит от получения правильных IP-предложений в контракте) Много раз я могу указать или даже разработать аппаратную платформу... поэтому мы говорим о серьезной свободе здесь.
Я могу видеть использование для построения автоматических тестов для определенного кода: библиотеки с более чем тривиальной функциональностью, основные функциональные возможности с большим количеством ссылок и т.д. В принципе, поскольку значение куска кода увеличивается благодаря интенсивному использованию, я может видеть, что было бы более ценным автоматическое тестирование этого кода, чтобы я знал, что не нарушаю его.
Однако в моей ситуации мне сложно рационализировать что-то большее. Я приму вещи, когда они окажутся полезными, но я не собираюсь слепо следовать чему-либо.
Я нахожу, что многие вещи, которые я делаю в "обслуживании", на самом деле являются небольшими изменениями дизайна. В этом случае тесты ничего мне не спасли, и теперь им тоже придется менять. Очень итеративный, новаторский подход к дизайну очень подходит для меня. Я не вижу, чтобы на самом деле сэкономить много времени с более обширными тестами.
Проекты для хобби еще труднее оправдать... обычно это что-то от выходных до месяца месяца. Ошибки в крайнем случае редко имеют значение, все об игре с чем-то.
Чтение таких вопросов, как этот, Самый проголосовавший за ответ, кажется, говорит, что в этом плакате опыт/мнение TDD на самом деле тратит время, если у вас меньше 5 человек (даже при условии определенного уровня компетентности/опыта работы с TDD). Однако это, по-видимому, покрывает начальное время разработки, а не техническое обслуживание. Неясно, как TDD складывается на протяжении всего жизненного цикла проекта.
Я думаю, что TDD может стать хорошим шагом в стоящей цели повышения качества продукции нашей отрасли в целом. Однако идеализм на нем больше не является настолько эффективным, чтобы мотивировать меня.
Я думаю, что TDD будет хорошим подходом в больших командах или любой команде размера, содержащей хотя бы одного ненадежного программиста. Это не мой вопрос.
Почему единственный разработчик с хорошей репутацией примет TDD?
Мне бы хотелось услышать какие-либо показатели, сделанные (формально или нет) в TDD... с упором на разработчиков соло или очень маленьких команд.
В противном случае, анекдоты вашего личного опыта тоже будут приятными.:)
Пожалуйста, избегайте высказывать мнение без опыта, чтобы поддержать его. Пусть не станет идеологической войной. Кроме того, пропустить больше аргументов о возможностях работы. Это просто вопрос эффективности.