Я работаю в команде среднего размера, и я на регулярной основе сталкиваюсь с этими болезненно большими файлами. Моя первая тенденция заключается в том, чтобы идти к ним ножом, но это, как правило, только усугубляет ситуацию и приводит меня в плохое состояние ума.
Например, представьте, что вам просто предоставили службу Windows для работы. Теперь в этой службе есть ошибка, и вам нужно выяснить, что делает служба, прежде чем вы сможете надеяться на ее исправление. Вы открываете сервис и видите, что кто-то решил просто использовать один файл для всего. Здесь используется метод "Старт", метод "Стоп", "Таймеры", вся обработка и функциональность. Я говорю тысячи строк кода. Методы, содержащие более сотни строк кода, встречаются редко.
Теперь, полагая, что вы не можете переписать весь класс, и эти божественные классы просто будут всплывать, что лучше всего с ними справиться? С чего начать? Что вы пытаетесь выполнить в первую очередь? Как вы справляетесь с подобными вещами, а не просто хотите, чтобы все было стабильно.
Если у вас есть стратегия только для того, чтобы держать себя в курсе, это тоже приветствуется.
Советы таким образом:
- Установить зону тестирования
- Сложение кода
- Реорганизовать существующие методы
- Поведение документа как обнаруженное
- Цель постепенного улучшения
Edit:
Чарльз Конвей рекомендует подкаст, который оказался очень полезным. ссылка
Майкл Перс (парень в подкасте) начинает с предпосылки, которые были слишком боятся просто взять проект из источника контроля и просто играть с ним напрямую, а затем выбросить изменения. Могу сказать, что я виноват в этом.Он по существу сказал, чтобы взять предмет, о котором вы хотите узнать больше, и просто начать раздвигать его. Откройте для себя зависимости, а затем сломайте их. Следуйте за ним по всему миру.
Великий совет Возьмите большой класс, который используется в другом месте и реализует интерфейс emtpy. Затем возьмите код с помощью класса и попробуйте вместо него создать экземпляр интерфейса. Это даст вам полный список всех зависимостей этого большого класса в вашем коде.