Pigmeich
Новичок
Неправда, я уверен ТС может написать кучу тестов на каждый свой вариант. Случай когда ты не можешь понять как использовать код - даже не клинический, а хуже.Объясняю что такое TDD и какое отношение оно имеет к дизайну. Тест, который пишется сначала, отвечает на вопрос что делает. Если ты не можешь написать тест (то есть ответить на вопрос что делает), значит этот класс в проекте не нужен и можно спокойно переключаться на другую задачу. Непосредственно тестируемый класс отвечает на вопрос как делает, то есть каким образом достигается тот результат, что описан в тестах. Исходя из этого, начинать проектировать класс нужно глядя на результат, который мы хотим получить, а не на то, что "мне кажется было бы неплохо написать еще один класс".
TDD дает уверенность в том что мы делаем то, что отвечает требованиям и в том что мы ничего не сломали. Методики вроде CRC-карточек он не заменяет и заменить не может.
Как учат классики - ложность выпячивается на крайних случаях.Может мы по разному понимаем что такое дизайн, но вообще TDD заставляет правильно проектировать классы: использовать композицию, подводит к использованию паттернов, и т.п.. ИМХО это достаточно тесно связано с дизайном, нет? Я конечно не спорю, что и с TDD можно такого нагородить, что ахнешь. Но все таки это уже не бездумная писанина - что вижу то и пишу.
Берем набор TDD и пишем ровно под него спагетти-код. Со всеми if(a = 1) a = 2. Где паттерны и крутой стиль?
TDD не может в принципе повлиять на качество кода, посколько является внешним средством и смотрит на код через компилятор. А как сказал один очень изместный Мартин: "написать код который поймет компьютер может любой идиот".
Да ну? Почему тогда все не перешли на TDD? Почему ребята пишушие в VBA TDD обычно не используют?PS. Знакомиться с TDD однозначно нужно каждому уважающему себя разработчику. Преимуществ огромное множество. Все минусы и "страшилки" с лихвой компенсируются результатом.
Лично я пробовал писать на TDD. Мне очень понравилось. Но не из-за того, что у меня поднялось качество кода. А из-за чувства безопастности за код написанный под TDD. А еще от поисков "кто виноват" удобно тестами отмахиватся.