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

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

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

23 ответов

2 просмотра

Не по теме, но почему бы не объединить все сингл лайв ивенты в один 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 принципы" - Вам этого не достаточно?

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

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

А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
4
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Так а кто может спарсить всех участников чата? Идишники
Magic
17
Есть вопрос: допустим есть железка с каким-то интерфейсом(допустим usb), но как по этому интерфейсу железкой управлять неизвестно, прог нету, а управлять очень хочется надо. К...
Mixail Frolov
15
а как ловят такое ghci> res <- getPos2 urlt 0 (alist !! 0) 200 ghci> res SearchAtom (Search "www.google.com" "/search?q=" "Haskell") "haskell.org" (SearchTS [(2024-05-06 07:...
Fedor
14
всем привет почти закончил курс После него можно писать свою операционку? Какие библиотеки надо использовать и куда дальше копать для изучения
Linus
13
Ребята, а из API геокодеров (по адресам в РФ) что сейчас актуального и есть ли среди актуального бесплатное/с нормаотным лимитом запросов? ситуация простая - на сайте периоди...
Dreamer_0x01 VeseloV
8
Карта сайта