intermediate

High cohesion and low coupling

Держите related behavior рядом, а unrelated modules независимыми, чтобы impact изменений был local, а dependencies понятными.

Связность (cohesion) — насколько элементы модуля относятся к одной цели; высокая — один ясный purpose. Связанность (coupling) — зависимости между модулями; низкая — меньше распространения изменений. Модули сфокусированы внутри и слабо связаны снаружи.

Низкая cohesion: несвязанные helpers в одном файле; высокий coupling: массовые imports при смене одной константы.

На интервью: cohesion/coupling на примере графа модулей — одно разделение и один interface.

Типовые ошибки: decoupling до nanomodules; global state связывает всё; число пакетов ≠ качество дизайна.

Компромисс — гранулярность: god modules vs слишком много мелких файлов.

Чеклист:

  • Код, меняющийся вместе — рядом.
  • Зависимости от stable abstractions, не internals.
  • Impact при правке модуля.