2026-02-23 19:52:05 +03:00

3.0 KiB
Raw Blame History

#рефакторинг #запахи_кода

!Pasted image 20241113223522.png

Когда класс пытается взять на себя слишком многое, это часто проявляется в чрезмерном количестве полей. А отсюда недалеко и до дублирования кода. Как и класс с большим количеством переменных экземпляра, класс со слиш­ ком большим количеством кода создает предпосылки для дублирования кода, ха­ оса и гибели. Простейшее решение (а мы уже не раз говорили, что предпочитаем простые решения) — это устранение избыточности в самом классе. Если у вас есть пять методов по сотне строк и с большим количеством дублируемого кода, возможно, их можно заменить пятью методами по десять и еще десятком двух­ строчных методов, выделенных из исходных. Часто лучшей подсказкой для разделения являются клиенты такого класса. Посмотрите, используют ли клиенты подмножество функций класса. Каждое та­ кое подмножество является возможным отдельным классом

Признаки

  • Класс содержит множество полей/методов/строк кода.

Причины появления

  • Как и в случае с длинными методами, чаще всего программисту ментально проще добавить фичу в существующий класс, чем создать новый класс для этой фичи

!Pasted image 20241113224408.png

Рефакторинги

!Pasted image 20241113224452.png

Результаты

  • Рефакторинг таких классов избавит разработчиков от необходимости запоминать чрезмерное количество имеющихся у класса атрибутов
  • Во многих случаях разделение больших классов на части позволяет избежать дублирования кода и функциональности

Ссылки