Я бы начал с различных задач, которые вам нужно выполнить.
Недавно я столкнулся с аналогичной задачей, учитывая 15-летнюю базу кода, созданную рядом разработчиков, которые не имели никакого общения друг с другом (один работал над проектом, ушел, а другой получил нанял и т. д., без перекрестных помех). В результате получается смешанная смесь самых разных стилей и качества.
Чтобы это работало, нам пришлось выделить необходимую функциональность, отличную от декоративного пуха, чтобы все это работало. Например, там много разных строковых классов, и один человек потратил то, что должно было потратить много времени на преобразование строки в 2 Кб между COleDateTime
в const char*
и обратно; это был пух, код для решения задачи, связанной с основной целью (получение информации из базы данных и из нее).
То, что нам пришлось сделать, это определить большую цель, которую достиг этот код, а затем написать для этого базовую логику. Когда возникла задача, которую нам нужно было выполнить, которая, как мы знаем, была выполнена ранее, мы нашли ее и обернули в вызовы библиотеки, чтобы она могла существовать сама по себе. Например, один фрагмент кода активирует драйвер устройства USB для создания образа; этот код не затронут текущим проектом, но вызывается при необходимости через библиотечные вызовы. Другой блок кода работает с ключом безопасности, а еще один запрашивает данные у удаленных серверов. Это весь необходимый код, который можно инкапсулировать. Тем не менее, код для рисования создавался более 15 лет и был настолько безумным, что переписывание в OpenGL в течение месяца было лучшим использованием времени, чем попытка выяснить, что сделал кто-то другой, а затем добавить к этому.
Я немного запутался, потому что наш проект был от MFC C ++ до .NET C #, но применяются основные принципы:
- найти главную цель
- определить все маленькие цели, которые делают возможным достижение главной цели
- Изолировать уже инкапсулированные части кода, если они есть, для использования в качестве библиотечных вызовов
- выяснить логику, чтобы собрать все воедино.
Надеюсь, это поможет ...