Я работаю в команде среднего размера, и я регулярно натыкаюсь на эти больно большие файлы классов. Моя первая тенденция заключается в том, чтобы идти к ним ножом, но это, как правило, только усугубляет ситуацию и ставит меня в плохое состояние.Работа с объектами-богами
Например, представьте, что вам просто предоставили службу Windows для работы. Теперь в этой службе есть ошибка, и вам нужно выяснить, что делает служба, прежде чем вы сможете надеяться на ее исправление. Вы открываете сервис и видите, что кто-то решил просто использовать один файл для всего. Здесь используется метод «Старт», метод «Стоп», «Таймеры», вся обработка и функциональность. Я говорю тысячи строк кода. Методы, находящиеся под сотней строк кода, встречаются редко.
Теперь, полагая, что вы не можете переписать весь класс, и эти классы богов просто будут всплывать, что с ними лучше всего подходит? С чего начать? Что вы пытаетесь выполнить в первую очередь? Как вы справляетесь с подобными вещами, а не просто хотите, чтобы все было стабильно.
Если у вас есть стратегия, просто держите свой контроль в проверке, это тоже приветствуется.
советы до сих пор:
- Создание тестового покрытия
- свертывание кода
- реорганизовать существующие методы поведения
- Документ, как обнаружил
- Aim для инкрементного улучшения
Edit:
Charles Conway рекомендует подкаст, который оказался очень полезным. link
Michael Feathers (парень в подкасте) начинается с предпосылки, которые были слишком боятся просто взять проект из источника управления и просто играть с ним напрямую, а затем выбросить изменения. Могу сказать, что я виноват в этом.
Он по существу сказал, чтобы взять предмет, который вы хотите узнать больше, и просто начать раздвигать его. Откройте для себя зависимости, а затем сломайте их. Следуйте за ним всюду.
Great Tip Возьмите большой класс, который используется в другом месте и снабдите его интерфейсом emtpy. Затем возьмите код с помощью класса и попробуйте вместо него создать экземпляр интерфейса. Это даст вам полный список всех зависимостей этого большого класса в вашем коде.
Бегите, и не останавливайтесь, чтобы оглянуться! – JoshBerke 2008-12-12 04:29:57
Если бы я мог Джош ... Если бы только я мог ... – 2008-12-12 04:32:00
Хе-хе, я слышал, мне когда-то пришлось пересмотреть это многопоточное 200-миллиметровое строковое приложение COM +, оно имело циклические величины сложности выше, чем когда-либо видел. Ох, и это было всего лишь как 5 методов. Я помахал и рассмеялся над Mgmt за то, что предложил нам «повторно использовать» эту услугу. – JoshBerke 2008-12-12 04:42:10