Выбор ответа Middle Модульность обновлено

Зависимость фичи от фичи

Вопрос

Модуль :feature:cart должен открыть экран товара из :feature:product. Как организовать зависимость?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: Через API-модуль или интерфейс навигации: cart зависит от product-api, реализация в app. Прямые зависимости между фичами быстро превращаются в клубок и циклы.

Варианты ответа

  1. cart напрямую зависит от product и создаёт его экран: так навигация проверяется при компиляции
  2. product зависит от cart, а экран товара регистрирует себя в корзине при старте приложения
  3. Скопировать экран товара в модуль корзины, чтобы фичи не зависели друг от друга совсем
  4. Через API-модуль или интерфейс навигации: cart зависит от product-api, реализация в appправильный ответ

Разбор

Прямые зависимости между фичами быстро превращаются в клубок и циклы. Схема api/impl: в product-api лежат интерфейсы (например, «открой товар по id»), в product-impl реализация. Фичи зависят только от api-модулей, а склеивает всё app-модуль через DI. Плюс: изменение реализации не пересобирает потребителей. Копирование ведёт к расхождению поведения.

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

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