Ответ вслух Middle Модульность обновлено

Как модульно устроить мобильное приложение

Вопрос

Расскажите, как вы делите приложение на модули.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Модули нужны для трёх вещей: быстрой инкрементальной сборки, явных границ и параллельной работы команд. У нас app-модуль собирает приложение и склеивает зависимости.

Что должно прозвучать в ответе

  • Цели: скорость сборки, границы, параллельная работа команд

  • Типы: app, feature (api/impl), core, тестовые утилиты

  • Правила зависимостей: фичи не зависят от реализаций друг друга, нет циклов

  • Навигация между фичами через интерфейсы и DI

  • Контроль графа и времени сборки

  • Платформенные детали: SPM/статическая линковка на iOS, Gradle на Android

Что могут спросить следом

  • Сколько модулей это слишком много?
  • Как вы проверяете, что правила зависимостей не нарушаются?

Разбор

Модули нужны для трёх вещей: быстрой инкрементальной сборки, явных границ и параллельной работы команд. У нас app-модуль собирает приложение и склеивает зависимости. Фичи разделены на api с интерфейсами и точками входа и impl с реализацией. Core-модули содержат сеть, хранилище, дизайн-систему и аналитику, они стабильные и маленькие. Правило: фича зависит только от core и api других фич, никогда от impl, и циклов нет, это проверяется на CI. Переходы между фичами идут через интерфейсы навигации, реализации подставляет DI. На iOS модули это локальные SPM-пакеты со статической линковкой, на Android Gradle-модули с convention plugins. Регулярно смотрю на граф и время сборки: если всё пересобирается от каждого изменения, значит, какой-то модуль стал свалкой.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.