Видео недоступно для предпросмотра
Смотреть в Telegram
Модули готовы. Следующая цель — запустить второе приложение.
Создали новый app-модуль. Нужно добавлять зависимости. DI-граф для нового приложения не возникает из воздуха — кто-то должен всё забиндить. И тут мы поступили максимально по-варварски: взяли AppModule.kt из Jazari Money на 400 строк, скопировали в Jazari Global и начали удалять лишнее.
В итоге — 301 строка. Примерно 60% одинаковые.
И AppModule — только самый наглядный пример. Копировалось всё, что живёт на уровне `app`-модуля: конфигурация, инициализаторы, навигация. Сценарий везде одинаковый: копируешь, удаляешь лишнее, добавляешь чего не хватило
Трейдоф здесь честный.
С одной стороны — дублирование. Добавил что-то в одном приложении — не забудь обновить второе.
С другой — абстракции не бесплатны. Разница между приложениями реальная, и любая «общая база» быстро начинает обрастать исключениями.
Технический долг? И да, и нет.
Зависит от того, сколько проблем это реально создаст. Иногда copy-paste — лучший архитектурный выбор. Главное — понимать цену переделки, если она понадобится.
Осталось склеить фичи между собой.
Один модуль = одна фича. Значит, фичи не знают друг про друга. Навигация живёт в `app`-модуле.
Каждая фича предоставляет extension на NavGraphBuilder:
fun NavGraphBuilder.createLoginScreen(
navController: NavController,
onTermsClick: () -> Unit = {},
onPrivacyPolicyClick: () -> Unit = {},
)
feature:login не знает, что делать после клика на T&C. Это просто callback, который реализует `app`-модуль. Jazari Money передаёт свою навигацию. Jazari One — свою.
Одна и та же фича, но возможно разное поведение.
В `app`-модуле приходится явно прописывать все переходы. Плюс это или минус — решайте сами 😉
И вот оно — приложение запустилось.
На видео самая первая версия: без анимаций, с кривой тёмной темой, временными заглушками вместо онбординга и главного экрана. Почти ничего нет из того, что запланировано — но сколько радости, потому что ОНО РАБОТАЕТ!!
→ серия «Два приложения — один логин»
#android #kotlin #androiddev #архитектура
Создали новый app-модуль. Нужно добавлять зависимости. DI-граф для нового приложения не возникает из воздуха — кто-то должен всё забиндить. И тут мы поступили максимально по-варварски: взяли AppModule.kt из Jazari Money на 400 строк, скопировали в Jazari Global и начали удалять лишнее.
В итоге — 301 строка. Примерно 60% одинаковые.
И AppModule — только самый наглядный пример. Копировалось всё, что живёт на уровне `app`-модуля: конфигурация, инициализаторы, навигация. Сценарий везде одинаковый: копируешь, удаляешь лишнее, добавляешь чего не хватило
Трейдоф здесь честный.
С одной стороны — дублирование. Добавил что-то в одном приложении — не забудь обновить второе.
С другой — абстракции не бесплатны. Разница между приложениями реальная, и любая «общая база» быстро начинает обрастать исключениями.
Технический долг? И да, и нет.
Зависит от того, сколько проблем это реально создаст. Иногда copy-paste — лучший архитектурный выбор. Главное — понимать цену переделки, если она понадобится.
Осталось склеить фичи между собой.
Один модуль = одна фича. Значит, фичи не знают друг про друга. Навигация живёт в `app`-модуле.
Каждая фича предоставляет extension на NavGraphBuilder:
fun NavGraphBuilder.createLoginScreen(
navController: NavController,
onTermsClick: () -> Unit = {},
onPrivacyPolicyClick: () -> Unit = {},
)
feature:login не знает, что делать после клика на T&C. Это просто callback, который реализует `app`-модуль. Jazari Money передаёт свою навигацию. Jazari One — свою.
Одна и та же фича, но возможно разное поведение.
В `app`-модуле приходится явно прописывать все переходы. Плюс это или минус — решайте сами 😉
И вот оно — приложение запустилось.
На видео самая первая версия: без анимаций, с кривой тёмной темой, временными заглушками вместо онбординга и главного экрана. Почти ничего нет из того, что запланировано — но сколько радости, потому что ОНО РАБОТАЕТ!!
→ серия «Два приложения — один логин»
#android #kotlin #androiddev #архитектура