Я преподаю урок по юнит-тестам, рефакторингу и так далее, и, вероятно, большинство людей ошибаются. Рефакторинг - это , а не , просто изменение кода. Это изменение кода без изменения внешнего функционального поведения. Это очень важный момент.
Другими словами, у вас должен быть какой-то способ убедиться, что внешнее функциональное поведение не повреждено после рефакторинга. Не имея божественного понимания, я считаю, что модульные тесты очень полезны для этого. В своей книге «Рефакторинг» Мартин Фаулер подчеркивает использование автоматических тестов для этой проверки.
Если ваш код был разработан с использованием TDD, у вас будет необходимый набор тестов, который был разработан при разработке самого кода. Если вам необходимо выполнить рефакторинг кода, для которого нет доступных тестов, лучше всего настроить автоматические тесты, прежде чем вносить какие-либо изменения в код. Я понимаю, что настройка тестов для существующего кода может быть сложной, но вы многое узнаете о коде, делая это.
Вы также можете проверить эссе Брюса Эккеля о строгой типизации и строгом тестировании , поскольку в нем обсуждаются отзывы, которые вы получаете от компилятора, и отзывы, которые вы получаете от своего набора тестов.