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 при правке модуля.