это наверно будет провокационный вопрос, но хочется услышать мнение экспертов 🙂 смотрите, несколько лет назад “типичная” архитектeра андроид приложения выглядела так: слоистый подход на базе MVP (пусть мокси), Cicerone от Кости, Rx для “соединения” слоёв и асинхронщины. Гугл запрыгивает в “ушедший” поезд и выпускает Arch Components и говорит, что теперь “правильно” это MVVM с ViewModels, LiveData, Nav Component, Coroutines и Flow и судя по всему - бОльшая часть комьюнити “молется” на этот подход от гугла и все кинулись всё переделывать и “тыкать” как теперь “правильно” и модно-молодёжно. Теперь вопрос: в реальной жизни кто-то пользуется MVVM на базе Arch Components на сложных проектах? Какие плюсы MVVM гугловского по сравнению с “классикой” Moxy+Cicerone+Rx ? Есть ли смысл щас всё переписывать на готовых запущенных проектах чтобы типа “в перспективе” был какой-то там профит, год, два, три спустя? Спасибо заранее 🙂
Я бы не стал рассматривать это всё в неделимой связке, все технологии в целом независимо заменяемы.
MVVM и MVP практически эквивалентны, в новом проекте я бы стал использовать VM потому что там нет кодогенерации, и подход больше ориентирован на представление состояния экрана в виде именно состояния, а не набора команд. Этот же подход использует Compose, можно к нему готовиться понемногу.
Cicerone в целом круче навкомпонентов, но тоже зависит от сложности вашей навигации, вдруг вы очень хотите compile-time картинку с графом.
Корутины вообще ван лав, учитывая, что у них есть свой Rx, одно удовольствие.
LiveData довольно странная штука, можно в целом тащить SharedFlow вместо неё.
Но это если речь о green-field проектах. Готовый запущенный проект - это всегда большая ответственность. Разумеется, он должен развиваться в ту сторону, в которую вы хотите, но исходить надо из конкретных потребностей проекта. Если у вас прекрасно работает какой-то стек - зачем его менять?