Выбор ответа Middle Модульность обновлено
Зависимость фичи от фичи
Вопрос
Модуль :feature:cart должен открыть экран товара из :feature:product. Как организовать зависимость?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Через API-модуль или интерфейс навигации: cart зависит от product-api, реализация в app. Прямые зависимости между фичами быстро превращаются в клубок и циклы.
Варианты ответа
cartнапрямую зависит отproductи создаёт его экран: так навигация проверяется при компиляцииproductзависит отcart, а экран товара регистрирует себя в корзине при старте приложения- Скопировать экран товара в модуль корзины, чтобы фичи не зависели друг от друга совсем
- Через API-модуль или интерфейс навигации:
cartзависит отproduct-api, реализация в appправильный ответ
Разбор
Прямые зависимости между фичами быстро превращаются в клубок и циклы. Схема api/impl: в product-api лежат интерфейсы (например, «открой товар по id»), в product-impl реализация. Фичи зависят только от api-модулей, а склеивает всё app-модуль через DI. Плюс: изменение реализации не пересобирает потребителей. Копирование ведёт к расхождению поведения.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Циклические зависимости модулей
Следующий вопрос
Инструменты модуляризации на Android
Ещё по теме «Модульность»
- Почему сборка не ускорилась после модуляризации
- Что выносят в core-модули
- Инструменты модуляризации на iOS
- Типы модулей мобильного приложения
- api и implementation в Gradle
- Статические и динамические модули на iOS
- Как вынести фичу из монолита в модуль
- Модули и команды