Два класса запутались в любви.

Проблемы

  • Связь
  • Назначение плохих обязанностей
  • Плохая сплоченность
  • Интерфейсы классов слишком общедоступны
  • Ремонтопригодность
  • Расширяемость

Решения

  1. Рефакторинг
  2. Объединить
  3. Замените иерархию делегированием.


Заменить суперкласс на делегата
Изменить описание refactoring.com



Образец кода

Неправильный

Правильно

Обнаружение

Некоторые линтеры определяют отношения классов и зависимости протоколов. Анализируя граф сотрудничества, мы можем вывести правила и подсказки.

Теги

  • Связь

Вывод

Если два класса слишком связаны и мало общаются с другими, нам может потребоваться их разделение, объединение или рефакторинг. Классы должны знать друг о друге как можно меньше.

связи



Больше информации

Https://wiki.c2.com/?InapplicitIntimacy





Независимо от того, насколько медленно вы пишете чистый код, вы всегда будете медленнее, если создадите беспорядок.

Роберт Мартин



Эта статья является частью серии CodeSmell.



Как найти вонючие части вашего кода
Код плохо пахнет. Давайте посмотрим, как изменить ароматы. medium.com