214 похожих чатов

Кто шарит в MVVM - норм, когда получается столько полей,

хранящих состояние внутри ViewModel?

23 ответов

30 просмотров

Не по теме, но почему бы не объединить все сингл лайв ивенты в один sealed?

Vitaly-Peryatin Автор вопроса
Vladimir
Не по теме, но почему бы не объединить все сингл л...

Это хорошая идея, в соседней ViewModel я так и сделал)

Почему бы mvi уже бы не заюзать?)

bookingDataLiveData можно кастнуть к MutableLiveData и менять. там вроде должен быть метод для предотвращения этого

Vitaly-Peryatin Автор вопроса
Egor Sigolaev
Почему бы mvi уже бы не заюзать?)

Не люблю MVI Да и в проекте слишком много говнокода, чтобы переписывать его на MVI На MVVM как-то попроще будет

Vitaly-Peryatin Автор вопроса
Vitaly Peryatin
Не люблю MVI Да и в проекте слишком много говнокод...

> в соседней ViewModel так и сделал > не люблю mvi Ты ж в курсе, что ты почти mvi сделал? Осталось только процедуры превратить в одну, сделав msg.

Vitaly Peryatin
Метод тоже кастануть мажно

ну conflatedBroadcastFlow.asFlow() делает мутабельный флоу иммутабельным, такое же для ливдаты есть, чтобы её немутабельной сделать

Vitaly-Peryatin Автор вопроса
Кирилл Романенко
> в соседней ViewModel так и сделал > не люблю mvi...

Да, я знаю, что это +1 шаг к MVI, но все же стейт не единый

Vitaly-Peryatin Автор вопроса
Mikhail L
Поздно уже не любить MVI

Почему же?) Вот когда все перейдут на Jetpack Compose, тогда уже поздно думаю)

Кирилл Романенко
Почему?

Потому что сейчас разработка возращается к функциональному программированию и однонаправленным архитектурам. Это как не любить Rx 5 лет назад.

Бывают огромные экраны, где даже больше полей. Соответственно и лайвдат больше. Рекомендуется в таких случаях создавать не одну ViewModel, а несколько ViewModels для одного экрана.

Vitaly-Peryatin Автор вопроса
Egor Katkov
Бывают огромные экраны, где даже больше полей. Соо...

А стоит ли запариваться по инкапсуляции и возвращать LiveData, если все равно можно кастануть объект?

Vitaly Peryatin
А стоит ли запариваться по инкапсуляции и возвраща...

Мне кажется, в данном случае во ViewModel можно объявить по одному полю для каждой LiveData. И не делать её приватной. Например: val someError = MutableLiveData<String>() Это поле Вы и будите использовать во вьюмоделе, для передаче ей значения. И во фрагменте(активити) - для получения значения.

Vitaly Peryatin
А стоит ли запариваться по инкапсуляции и возвраща...

Можно вообще рефлексию юзать и дергать любое приватное поле, суть то не в этом. Интерфейс это инструмент высокоуровневого проектирования, если ты что-то кастуешь, то скорее всего идешь против задумки "архитектора", в данном случае нарушаешь UDF.

Egor Katkov
Бывают огромные экраны, где даже больше полей. Соо...

А в чем профит нескольких ВМ? со стороны совет выглядит как, обычные SRP / SOC принципы, т.е. можно разделить просто раскидав код по разным сущностям(классам), при этом оставаясь в рамках одной ВМ, цель последней - просто переживать жц вью.

Vitaly Peryatin
А стоит ли запариваться по инкапсуляции и возвраща...

вот вернут тебе не MutableLiveData, а ActualLocationLiveData и сиди кастуй туда-сюда)

Vitaly Peryatin
Не люблю MVI Да и в проекте слишком много говнокод...

Отрицание - это как раз первая стадия принятия

Arsen (CeH9)
А в чем профит нескольких ВМ? со стороны совет выг...

представьте, что у Вас перегруженный большой экран. А ещё и detect + ktlint подключены, которые ограничивают Вас от написания чрезмерно больших классов. В таких случаях удобно разделить данный класс на несколько. "совет выглядит как, обычные SRP / SOC принципы" - Вам этого не достаточно?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта