Вы сначала реорганизуете свой SQL? Ваша архитектура? или ваша кодовая база? Вы меняете языки? Вы выбрасываете все и начинаете с нуля? [Без рефакторинга]


Это действительно зависит от состояния кодовой базы ... есть ли массовые классы? один класс с мега-методами? Насколько сильно связаны классы? конфигурация - это бремя?
Учитывая это, предлагаю прочитать Эффективная работа с устаревшим кодом, выделить свои проблемы и применить рекомендации.
Рефакторинг Мартина Фаулера - это библия мастера рефакторинга. Это очень помогло мне в развитии. Я также рекомендую Head First Design Patterns и Code Complete.
Я добавляю модульное тестирование в большую устаревшую кодовую базу спагетти.
Мой подход заключается в том, что, когда меня просят решить проблему, я пытаюсь создать новую оболочку вокруг той части кода, которая имеет отношение к моей текущей задаче. Эта новая оболочка разработана с использованием TTD (сначала напишем тест). Иногда вызывается в унаследованного кода, не прошедшего модульное тестирование. В других случаях я делаю новую копию существующего модуля и начинаю серьезно насиловать ее. Иногда переписываю функционал с нуля.
Но поскольку я довольно хорошо провожу тесты, я чувствую, что все под контролем.
Что я обнаружил в этой кодовой базе, которая была разработана с использованием слишком большого количества копий и вставок, так это то, что как только я понимаю конкретную часть и извлекаю из нее некоторые функции (которые выполняются в первую очередь) ... функции часто оказываются пригодными для использования во многих других местах, поэтому скорость замены устаревшего кода моими собственными, тестируемыми модулями библиотеками увеличивается.
Я не (и не имею полномочий) пытаться переписывать или добавлять тесты к тем частям кода, которые не затрагиваются моей текущей проблемой (обычно это ошибка, которую я пытаюсь исправить), но у меня есть довольно агрессивная проактивная позиция. обо всем, что касается и может иметь отношение к делу.
Обновление: Penguinix спросил: «На каких языках вы работаете? Вы порекомендуете какие-то специальные средства тестирования?»
Прямо сейчас я работаю с ... э ... свинка! Но тот же принцип работает везде.
Что-то, что изменило мое понимание UT, было MinUnit: http://www.jera.com/techinfo/jtns/jtn002.html
Когда я увидел MinUnit, для меня это был своего рода "дзен" момент просветления. Это избавило меня от недопонимания, которое у меня было о модульном тестировании как о чем-то сложном, требующем сложных объектно-ориентированных структур и т. д. Я понял, что UT просто собирался написать кучу тестов. «Обвязку» вы можете написать сами, примерно за 3 минуты, на любом языке, который вам нравится. Просто продолжай и делай это.
На каких языках ты работаешь? Вы порекомендуете какие-то специальные приспособления для тестирования?
Выглядит интересно. Я использую «Работаем эффективно ...» прямо сейчас в моем первом крупном заброшенном приложении, и это очень помогает. Думаю, рефакторинг amazon.com/dp/0201485672 тоже может быть полезен (моя следующая покупка).