3.0 KiB
#рефакторинг #запахи_кода
Когда класс пытается взять на себя слишком многое, это часто проявляется в чрезмерном количестве полей. А отсюда недалеко и до дублирования кода. Как и класс с большим количеством переменных экземпляра, класс со слиш ком большим количеством кода создает предпосылки для дублирования кода, ха оса и гибели. Простейшее решение (а мы уже не раз говорили, что предпочитаем простые решения) — это устранение избыточности в самом классе. Если у вас есть пять методов по сотне строк и с большим количеством дублируемого кода, возможно, их можно заменить пятью методами по десять и еще десятком двух строчных методов, выделенных из исходных. Часто лучшей подсказкой для разделения являются клиенты такого класса. Посмотрите, используют ли клиенты подмножество функций класса. Каждое та кое подмножество является возможным отдельным классом
Признаки
- Класс содержит множество полей/методов/строк кода.
Причины появления
- Как и в случае с длинными методами, чаще всего программисту ментально проще добавить фичу в существующий класс, чем создать новый класс для этой фичи
Рефакторинги
- Извлечение класса (Extract Class)
- Извлечение суперкласса (Extract Superclass)
- Замена кода типа подклассами (Replace Type Code with Subclasses)
Результаты
- Рефакторинг таких классов избавит разработчиков от необходимости запоминать чрезмерное количество имеющихся у класса атрибутов
- Во многих случаях разделение больших классов на части позволяет избежать дублирования кода и функциональности


