Люди получают мотивацию из-за ПРЕИМУЩЕСТВ. Люди не хотят делать то, что они считают, БОЛЬШЕ работы. Единичное тестирование означает МЕНЬШЕ. Это означает, что выходить с девушками больше. Это означает, что вы получаете больше, потому что вам не нужно каждую ночь кодировать до 11 вечера. Это означает, что вы собираетесь отдыхать больше. Это означает, что быстрее создавать программы для людей, которые не заинтересованы в том, чтобы закладывать.
Я обнаружил, что, когда я начал делать TDD (еще в 2002 или 2003 году), это было немного странно ... но даже за несколько дней я начал замечать огромные преимущества в производительности.
Самое большое преимущество TDD заключается в том, что вы можете реорганизовать свою программу на лучший дизайн ... или просто изменить название чего-то ... и пока этот дизайн не нарушит тесты, вы можете иметь 100 % уверенности в том, что ваши изменения ничего не сломали.
Очевидно, что стоимость этого увеличивается, чем больше ваш проект. Благодаря масштабным проектам это абсолютная находка в отношении экономии времени.
Еще одно большое преимущество в том, что если вы должны создать ошибку в своей системе, вы сразу узнаете. Нет никаких расходов, отслеживающих его. Кому нравится отслеживать ошибки? Я не. Ваши коллеги тоже этого не делают.
Цель с TDD - написать тест, написать код и запустить тесты. Если вы заметите, что при добавлении какого-то нового кода происходит целая куча тестов, вы сразу же узнаете, что вызвало это. На самом деле нет необходимости в отладчике или размещать инструкции печати по всей вашей программе, чтобы выяснить, что не так. Так много времени было спасено!
Еще одно большое преимущество заключается в том, что вы можете начать с дизайна, который вы хотите - на высоком уровне, и не беспокоиться об осуществлении, пока не начнете кодирование. Вы можете работать с более мелкозернистыми деталями по мере продвижения. Это означает, что дизайн ваших классов должен быть более правильным, чем делать вещи из восходящего дизайна. Это означает, что вам не нужно реорганизовывать его так, чтобы получить желаемый дизайн, потому что вы не могли видеть лес через деревья.
Еще одна удивительная выгода заключается в том, что у вас есть больше уверенности в вашем коде в целом. Вы ЗНАЕТЕ, что это работает. Это доказано. Хотя это не доказывает, что у вас не будет никаких ошибок, это доказывает, что все ожидаемые проблемы, о которых вы могли подумать, позаботились.
По мере того, как вы получаете опыт, вы будете предлагать все больше и больше способов разбить систему. Каждый раз, когда вы придумываете один, вы пишете тест, чтобы сломать его, а затем вы напишите код, чтобы исправить его. Сделав это для всего, на что способен ваш разум, ваша система должна быть довольно прочной.По сути, это кусочек ума, который нельзя дать, просто закодируя вслепую.
Это означает, что вы можете получать положенные деньги, и вам не нужно беспокоиться о телефонном звонке, прося вас вернуться к работе, чтобы исправить критическую ошибку.
Во всяком случае, это моя коммерческая подача на TDD. ВЫГОДЫ!
Хмм очень похоже на ситуацию, в которой я нахожусь! ^^ особенно факт, что знание о базе кода звучит очень familier:] +1 – Bas