Будешь ли использовать многомодульность при создании приложения интернет магазина

Ответ

Да, многомодульность стоит использовать для интернет-магазина. Это улучшит:

  • Скорость сборки (изменения в одном модуле не требуют пересборки всего проекта)
  • Чистую архитектуру (разделение на feature-модули: catalog, cart, auth и т.д.)
  • Повторное использование кода (общие модули типа core, network)

Пример структуры:

:app          # entry point  
:features  
  ├─catalog   # экраны каталога  
  ├─cart      # корзина  
  ├─auth      # авторизация  
:core         # общие утилиты, DI  
:data         # репозитории, API  

Важно: начинать с простой структуры и добавлять модули по мере роста проекта.

Ответ 18+ 🔞

Ну вот, опять про модули. Слушай, как будто на дворе 2002-й год, все только и говорят, что про модули, как будто это панацея от всех бед. Но если серьёзно — да, для магазина это реально пиздец как полезно, если, конечно, не накосячить с самого начала.

Представь: у тебя монолит, один здоровенный модуль :app. Ты поправил одну кнопку в корзине, а Gradle начинает пересобирать всё, от авторизации до каталога. Сидишь, кофе пьёшь, жизнь проживаешь, а он там ебать-копать полчаса ворчит. Терпения ноль, ебать! А с модулями — чих-пых тебя в сраку — поправил в :cart и собрал только его. Остальное уже скомпилировано. Скорость — просто овердохуища.

И архитектура сразу становится чище. Не эта манда с ушами, где всё свалено в одну кучу. Каждый фича-модуль (:catalog, :auth) живёт своей жизнью, отвечает за свою часть. В :core выносишь всё общее — DI, утилиты, стили. В :data — работу с сетью и базами. Получается аккуратно, как у хорошего плотника в мастерской.

Вот смотри на структуру, она простая, как три копейки:

:app          # точка входа, тут только сборка всего в кучу
:features
  ├─catalog   # всё про товары, списки, фильтры
  ├─cart      # корзина, тут же и оформление
  ├─auth      # логин, регистрация, восстановление пароля
:core         # общие штуки: DI, themes, extensions
:data         # репозитории, API-клиенты, модели

Главный совет, чтобы не охуеть от сложности: не начинай с этого! Не надо сразу пилить десять модулей. Сделай сначала монолит, пойми, как фичи взаимодействуют, а потом, когда проект подрастёт и начнёт бздеть от своего веса, — вот тогда и начинай резать его на модули. Сначала вынеси :core и :data, потом самый громоздкий фича-модуль. Постепенно.

А то знаю я этих распиздяев, которые с первого коммита делают двадцать модулей, а потом сами от себя охуевают, потому что зависимости между ними — это пиздопроебибна история, и сборка ломается чаще, чем работает. Не будь таким полупидором, делай с умом.