TGViewer
METANIT.COM METANIT.COM @devnull22 · 5.81K subscribers
Post #2069 2.25K
Признаки кода, которые могут указывать на потенциальные проблемы в программе (по категориям):

1. Bloaters (раздуватели):
- Long Method: Слишком длинные функции/методы, которые следует разделить для улучшения читаемости и поддерживаемости.
- Large Class: Классы, выполняющие слишком много задач, что нарушает принцип единственной ответственности (SRP).
- Primitive Obsession: Чрезмерное использование примитивных типов данных вместо создания специализированных классов.
- Long Parameter List: Методы с большим количеством параметров, что затрудняет их использование.
- Data Clumps: Группы данных, которые всегда появляются вместе, что может указывать на необходимость создания нового класса.

2. Object-Orientation Abusers (нарушители объектно-ориентированного подхода):
- Switch Statements: Частое использование switch-операторов, что может быть заменено полиморфизмом.
- Temporary Field: Временное поле, используемое только при выполнении определенного условия - можно заменить на локальную переменную/параметр.
- Refused Bequest: Подкласс, который никак не изменяет функционал базового класса, что может указывать на неправильную иерархию.
- Alternative Classes with Different Interfaces: Классы с похожим поведением, но разными интерфейсами, которые можно объединить или извлечь общий интерфейс.

3. Change Preventers (препятствия изменениям):
- Divergent Change: Класс, который часто изменяется по разным причинам, что требует разделения на более мелкие классы.
- Shotgun Surgery: Мелкие изменения, разбросанные по многим классам, что указывает на плотное связывание и необходимость рефикторинга классов в модули.
- Parallel Inheritance Hierarchies: Добавление подклассов в одну иерархию требует добавления в другую, что можно заменить делегированием или композицией.

4. Dispensables (Излишние конструкции):
- Comments: Избыточные или устаревшие комментарии, которые лучше заменить самодокументируемым кодом.
- Duplicate Code: Повторяющийся код, который следует вынести в отдельный метод.
- Dead Code: Неиспользуемый код, который нужно удалить.
- Lazy Class: Класс с минимальной ответственностью, который можно объединить или удалить.
- Speculative Generality: Код, написанный для будущих нужд, который в текущий момент можно удалить, сфокусировавшись на текущийх потребностях

5. Couplers (Связыватели)
- Feature Envy: Метод обращается к данным другого класса чаще, чем к своим. Можно переместить метод в класс, к которому он относится.
- Inappropriate Intimacy: Классы слишком зависят друг от друга. Можно усилить инкапсуляцию и уменьшить зависимости.
- Message Chains: Длинные последовательности вызовов методов. Можно объединить в вспомогательные специальные методы.
- Middle Man: Класс, который в основном делегирует задачи другим. Можно удалить или объединить функциональность для упрощения.
  • 👍 28
  • 🤝 4
  • ❤ 2
  • 🔥 1
More from @devnull22
  1. Mar 19, 2026Добавил в руководство по JavaScript главу про работу с датами и временем с помощью Tempora…
  2. Mar 19, 2026Роскомнадзор перестал полностью справляться с блокировками в интернете Роскомнадзор (РКН)…
  3. Mar 18, 2026Минцифры опубликовало законопроект о государственном регулировании ИИ. Закон должен начать…
  4. Mar 18, 2026Microsoft призвала разработчиков создавать ИИ-приложения в Electron на Windows 11 Microsof…
  5. Mar 18, 2026Oracle анонсировала проект Detroit, который будет развиваться в составе OpenJDK и нацелен…
  6. Mar 17, 2026Вышла новая версия платформы Java - JDK 26. JDK 26 — краткосрочная версия с поддержкой Pre…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →