Первое: удачи, тебе это понадобится. Это потенциально ОГРОМНАЯ работа, с которой вы столкнулись. Это звучит очень знакомо для меня; Я работал над подобными вещами в прошлом.
Одна вещь, о которой нужно подумать; прежде чем вы вообще начнете рефакторинг, я действительно настоятельно рекомендую создать обширную среду тестирования. Причина в следующем: с хорошими юнит-тестами и регрессионными тестами вы можете начать вносить изменения, не беспокоясь о нарушении существующей функциональности. (Тем не менее, всегда есть проблема, но ...)
Это сказало: я бы посмотрел на нарезку отдельных «вертикальных» фрагментов функциональности и посмотрел, сможете ли вы написать для них отдельные модульные и интеграционные тесты; как только это будет сделано, я запрыгну и начну работать над рефакторингом. Хотя поначалу он может быть очень маленьким, просто процесс выделения вертикального фрагмента функциональности, а затем написания кода интеграции и модульного тестирования для него даст вам большой опыт работы с существующей кодовой базой. И если вам удастся сначала сделать это немного лучше, то вы намного впереди.
После того, как вы это сделаете, начните искать потенциально большие блоки функциональности для рефакторинга. Если нет возможности получить чистые блоки функций для рефакторинга, я бы начал смотреть на небольшие куски; если вы можете найти небольшой (иногда ОЧЕНЬ маленький) кусок кода для извлечения, модульного тестирования и рефакторинга, вы двигаетесь вперед. Иногда это может показаться очень-очень медленным прогрессом, и это произойдет, если у вас действительно большой проект, но вы БУДЕТЕ делать вмятину.
Но в общем, сначала подумайте о проведении тестов, чтобы подтвердить ожидаемую функциональность. После того, как эти тесты будут готовы, вы можете с уверенностью рефакторинг (не полная уверенность, но лучше, чем ничего), что вы ничего не сломаете. Начните с малого и опирайтесь на методы, раскрывающиеся из существующей кодовой базы. Это длинный слог, но вы в конце концов доберетесь до него, и кодовая база будет лучше для него.