Обычно работаю с матом и нервами. Но для себя сделал несколько выводов:
1. Рефакторить понемногу. НЕ стоит браться сразу переписывать все. Так можно утонуть. Стоит понемногу, выносить код. Так гораздо проще.
2. Обязательно нужны тесты. Перед тем, как рефакторить какой то кусок кода - написать для него тесты, что бы потом ничего не отвалилось. Такими темпами со временем весь код будет покрыт тестами.
3.Если нет времени на глобальный рефакторинг, нужно чистить код понемногу. Если вы, например, вынесли кусок кода в функцию - не надо тут же искать, где еще в коде есть такие кусочки. Потом, когда столкнетесь с ними, поменяете.