Слишком много нюансов; за всем уследить не реально. По-этому, языки программирования эвалюционировали в сторону мимизации ответственности конкретного куска кода.
Потму что вы неправильно ставите вопрос, как всегда. Правильный вопрос — как избежать ошибок в наших программах? Один из правильных ответов — TDD.
Чаще всего мы делаем ошибки в логических конструкциях (алгоритмах) потому что логикой в совершенстве мы не владеем. Я читал в какой-то книге по НЛП что сознание может хранить (!) семь (+/- 2) переменных. Поэтому можно "зафлудить" внимание человека и снять незаметно часы. И не пропустить какой-то нюанс в алгоритме, обдумывая другие.
Dagdamor Не важно верит кто-то или нет, но TDD себя прекрасно зарекомендовало при разработке корпоративных приложений Я противник использования везде всего , но для повышения качества продукта в некоторых случаях это просто необходимо. флоппик Я и не думал что кто-то использует unit tests в php, какие из них наиболее популярны и что можешь посоветовать ?
для среднего приложения нужен 1 кодер и тестер... для большого приложения нужен 1 кодер и 2-3 тестера... для огромного приложения, нужен 1-3 кодера и море тестеров p.s. все очень условно, не цепляться к словам
Amian Что-то мне подсказывает, что ты говоришь про наборы тестов для автоматической проверки работоспособности приложения. Так вот, это - не TDD. TDD - это _разработка_ приложения через написание тестов, а не контролирование.
Человеческий фактор самая большая проблема программирования... Я неоднократно уже высказывал свою теорию о том что ошибки будут всегда, потому что их пишут люди, и даже когда код будут писать роботы всё равно будут ошибки потому что программы для роботов тоже будут писать люди...
Amian Это не совсем то. Я говорю о ситуации, когда быдлокодеру дают набор тестов и он мучает код, пока тесты не начнут проходить вот это и есть настоящий TDD, по крайней мере в моем понимании, ибо driven = управляемый. Нормальную же, грамотную разработку следует назвать TSD (test-supported development), ибо в ней тесты лишь грубое, и вовсе не окончательное средство контроля результата. Окончательный контроль - за самим разработчиком. При грамотной разработке, например, возможна ситуация, когда код верен, а тесты не проходят (из-за кривизны проектирования интерфейсов или ошибок в самих тестах), при TDD это невозможно.
Sergey89 Возможно, но прохождение тестов не означает работоспособность системы. Когда эти понятия начинают путать, и начинается TDD.
Sergey89 Бррр... давайте так: прохождение тестов означает только то, что система проходит тесты. Ничего более. Делать какие-либо предположения о стратегии работы системы по тестам - очень опасно. Грубая аналогия - делать вывод, что человек по-прежнему здоров, если на него налезает все та же майка.
Если градусник показывает 36.6 (будем считать ожидаемым результатом), то пока человек здоров, он будет показывать всё те же 36.6.