Вопрос с собеседования · Java

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

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

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

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

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

Подробно

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

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

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

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

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

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

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

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

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

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

Разбор темы

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

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования