TGViewer
Мобильная разработка Мобильная разработка @mobi_dev · 13.1K subscribers
Post #4828 766
Границы модулей, которые нельзя обойти случайным import

Фича оформления заказа захотела аватар пользователя — и получила зависимость от реализации профиля. Проект собирается, но менять эти части независимо уже сложнее.

В разборе модульной архитектуры Compose каждую возможность делят на -api и -impl. Только модуль приложения видит реализации. Остальные фичи общаются через контракты.

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

Для навигации наружу отдают launcher, возвращающий маршрут. Фича знает, куда можно перейти, а вызывающий код решает, как изменить back stack. В статье есть примеры проверок и цена такого разделения.
  • 👌 1
More from @mobi_dev
  1. Oct 18, 2026Lottie в пейволле: обычный пример с CDN не заработает В RevenueCat можно добавить собствен…
  2. Oct 17, 2026Два String — и платёж ушёл не туда Идентификаторы продавца и банка могут выглядеть одинако…
  3. Oct 17, 2026Кнопка закрытия sheet переехала на боковую панель На внешнем экране iPhone Duo привычное м…
  4. Oct 16, 2026Долгая задача продолжится, даже если Android-приложение закрыли Помощник собирает маршрут:…
  5. Oct 16, 2026Как согласовать скругления карточки и контейнера в SwiftUI Одинаковый cornerRadius у внешн…
  6. Oct 16, 2026Пользователь отменил покупку. Это ещё не ошибка Собственный экран оплаты и собственная обр…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →