Фича оформления заказа захотела аватар пользователя — и получила зависимость от реализации профиля. Проект собирается, но менять эти части независимо уже сложнее.
В разборе модульной архитектуры Compose каждую возможность делят на
-api и -impl. Только модуль приложения видит реализации. Остальные фичи общаются через контракты.Правило проверяет convention plugin Gradle: зависимость чужой фичи от
-impl останавливает сборку ещё на этапе конфигурации. Внутренние маршруты, репозитории и ViewModel дополнительно закрывают через Kotlin internal.Для навигации наружу отдают launcher, возвращающий маршрут. Фича знает, куда можно перейти, а вызывающий код решает, как изменить back stack. В статье есть примеры проверок и цена такого разделения.
