Получить доступ

Что верно про связность (cohesion) и связанность (coupling)?

MiddleПринципы проектирования
Коротко

Связность (cohesion) — насколько элементы модуля служат одной задаче: хотим высокую. Связанность (coupling) — насколько модуль завязан на устройство других: хотим низкую.

  • Виды связанности от лёгкой к тяжёлой: по данным, управляющая (флаг диктует ветку), общая (разделяемое изменяемое состояние), содержательная (лезем во внутренности)
  • Модуль, от которого зависят многие, должен быть стабильным и абстрактным
  • Низкая связность — признак: методы класса не пересекаются по полям

А ещё Микросервисы с общей БД — сильная связанность при видимом разделении

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Связность измеряет, насколько элементы модуля служат одной задаче; связанность — насколько модуль завязан на устройство других. Градации связанности от безобидной к тяжёлой: по данным, управляющая (флаг диктует ветку), общая (разделяемое изменяемое состояние), содержательная (лезем во внутренности). Метрики Мартина: чем выше afferent coupling, тем стабильнее и абстрактнее обязан быть модуль — отсюда требование DIP держать в межслойных интерфейсах абстракции, а не детали.

Что хотят услышать

  • Определения и желаемое направление.
  • Виды связанности.

Частые ошибки

  • Путать два понятия местами.
  • Считать любую зависимость злом: цель — управлять направлением и силой связей, а не убрать их.

Проверьте себя

Несколько верных вариантов. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Хорошее разбиение стремится к высокой связности и низкой связанности
  • ✓Связанность через boolean-флаг, диктующий чужому модулю ветку выполнения, — управляющая и хуже связанности по данным
  • ✓Модуль, от которого зависят многие другие, должен быть стабильным и абстрактным
  • ✗Связность и связанность — синонимы, различающиеся только переводом

Что спросят дальше

  • Как shotgun surgery связан с этими метриками?
  • Почему boolean-параметр в сигнатуре — запах?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем