Перейти к содержимому
Источник

ViewModel и init

Наткнулся на первую статью из серии best practices для работы с ViewModel. Очень похоже по стилю на что-то гугловое, из-за чего я купился, но, слава богу, нет. В ней автор говорит, что init секцию в ViewModel использовать не рекомендуется для инициализации состояния. Да, так и написано, init не использовать для инициализации ✏️. Аче всмысле? Я заинтересовался.

Говорит это на первый взгляд кажется удобно, но у этого есть минусы. Ок, давайте по порядку.

А предлагает то что? Предлагает переписать простой и понятный код, где в init блоке в viewModelScope какая-то загрузка дёргается на какие-то реактивные цепочки типа flow{...}.stateIn() и stateFlow.asLiveData().switchMap{...} в пропертях. Что или сомнительно, или как раз не скейлится на более комплексные вьюмодельки, или не универсальное решение, т.е. в каждом случае тебе нужно разное решение придумывать. init прекрасен тем, что тебе думать не надо, ты пишешь простой (почти) синхронный код в любом своём сценарии. На функции только разбивать не забывай, чтобы понятно было, да и всё.

И я вообще не понимаю зачем это всё, он обходит придуманные им самим ограничения. Пища для размышлений, конечно, какая-то есть, но что аргументами, что решениями меня не убеждает совсем. Я что-то упускаю или на медиуме опять хайпит дичь? 🤔