Со всей серьезностью, рефакторинг не является делом, которое следует воспринимать легкомысленно, особенно в тесно связанных системах. Часто это может показаться стоящей задачей, прежде чем она будет выполнена, но, по моему опыту, она может вскоре стать бременем после ее запуска, так как она чаще приводит к появлению новых ошибок, чем к решению любых существующих проблем.
Перед тем, как приступить к серьезному рефакторингу, вы должны подумать о том, какие будут выгоды и какие есть альтернативы (например, создание нового продукта с нуля, рефакторинг только тех частей, которые в нем нуждаются, и т. Д.). Перед началом работы вы должны хорошо понимать архитектуру, роли и обязанности, а также ожидаемое и существующее поведение, чтобы знать, когда что-то сломалось.
Кроме того, может быть полезно составить план того, каким он будет после рефакторинга и как он отображается в текущей реализации, чтобы вы могли оставаться на месте. Вы также должны регрессивный тест как можно чаще.
Перфекционисту может быть неприятно, когда дизайн совершенно очевидно нуждается в рефакторинге, но иногда приходится учитывать цену / выгоду от изменений и уступать в битве. Если вам необходимо внести изменения, действуйте осторожно и не пытайтесь делать слишком много сразу.