Короткий ответ
Модульность — разбиение кода на независимые по ответственности части с чёткими интерфейсами, что снижает связанность и облегчает изменение одной части без последствий для других.
Как это работает подробнее
Модуль скрывает детали реализации за публичным интерфейсом (функции, классы), остальной код обращается только к этому интерфейсу.
Что использовать на практике
- Практика. Типичное разделение — слой API, слой бизнес-логики (use cases), слой доступа к данным (репозитории); это упрощает unit-тестирование (можно подменить репозиторий мок-объектом) и замену реализации (например, смену БД).
Подводные камни
- Риск. «Протекание» деталей реализации наружу (например, ORM-модель используется прямо в контроллере), циклические зависимости между модулями, чрезмерное дробление без выгоды для маленького проекта.