Неуместная близость
Симптомы и признаки
Один класс использует служебные поля и методы другого класса.
![](/images/refactoring/content/smells/inappropriate-intimacy-01.png?id=31bf185f4ff946f13e28d27d377a4b6c)
Причины появления
Смотрите внимательно за классами, которые проводят слишком много времени вместе. Хорошие классы должны знать друг о друге как можно меньше. Такие классы легче поддерживать и повторно использовать.
Лечение
-
Самый простой выход — при помощи перемещения метода и перемещения поля перенести части одного класса в другой (в тот, где они используются). Однако это может сработать только в том случае, если оригинальный класс не использует перемещаемые поля и методы.
-
Другим решением является извлечение зависимых частей в отдельный класс и сокрытие делегирования к этому классу.
-
Если между классами существует обоюдная зависимость, стоит прибегнуть к замене двунаправленной связи на однонаправленную.
-
Если близость возникает между подклассом и родительским классом, рассмотрите возможность замены делегирования наследованием.
![](/images/refactoring/content/smells/inappropriate-intimacy-03.png?id=de33e2285073feaabd1a81cffdcd386c)
Выигрыш
-
Улучшает организацию кода.
-
Упрощает техническую поддержку и повторное использование кода.