Size: a a a

Android Architecture

2020 March 06

АЕ

Алексей Ершов in Android Architecture
mr. PESIK
отсутсвие вменяемого дата биндинга по вашему исключает MVVM в андроиде?
да. Я это упомянул, скорее, в том смысле, что прежде чем сравнивать две вещи, надо дать им чёткое определение. Про MVP примерно ясно, а вот MVVM прям нужно чётко пояснить, что вы в это вкладываете.
источник

КР

Кирилл Романенко in Android Architecture
mr. PESIK
Коллеги, делаю презентацию для выступления спикером. Тема "Чем MVVM лучше MVP?".  Я привожу там аргументы, собственно чем. Вот они:
1) Нет беготни туда-сюда и ссылки на вью в презенторе
2) В VM легче следить за состоянием вью
3) Это более актуальная архитектура представления
4) Легче в использовании (сомнительно)
5) Привожу в пример кейс где у меня 2 ViewPager-а с фрагментами, которые ведут себя синхронно. Один ViewPager - миниатюрка с графиками (листаемая), другой ViewPager - детализация все с теми же графиками только информации больше и графиков (листаемая). И делая фичу на MVP получилось 4 презентора (хотя это можно было бы избежать используя необязательные методы во View-интерфейсе. Но все равно кода получилось меньше, читабельность не пострадала, и вроде как ViewModel получилась более переиспользуемой. И не пришлось юзать колбэки между фрагментами, чтобы миниатюрка была на той же странице, например.
Если есть что добавить, или считаете что я не прав в некоторых пунктах, то накидывайте. Нужно понять насколько прочный и уместный у меня доклад!
Пока не поздно, советую переделать тему на "Чем MVI лучше MVP и MVVM?"
источник

AO

Artem Osipov in Android Architecture
Simon Belialov
тем что собственно есть состояние а не набор комманд
ммм, ну слабенько пока
источник

SB

Simon Belialov in Android Architecture
Алексей Ершов
накину: в андроиде нет MVVM, и если вы под этим подразумеваете ViewModel из архитектурных компонентов, то в плане удобства использования они полностью эквивалентны MVP.
Почему архитектурные компоненты это не мввм? Не могут им быть
источник

ML

Mikhail Levchenko in Android Architecture
> MVP vs MVVM

картинка с марио "i'm 4 parallel universes ahead of you"
источник

AO

Artem Osipov in Android Architecture
Simon Belialov
тем что собственно есть состояние а не набор комманд
если сделать mvp с одной командой то будет тоже самое
источник

mP

mr. PESIK in Android Architecture
Artem Osipov
>2) В VM легче следить за состоянием вью
чем легче?
благодаря observable объекту внутри VM. Если юзать объект типа EmployeeState (или EmployeeModel, как хотите), то гораздо удобнее. Но аргумент тоже сомнительный, хотя мне на практике казалось что легче. с MVP работал в связке с moxy
источник

mP

mr. PESIK in Android Architecture
Алексей Ершов
да. Я это упомянул, скорее, в том смысле, что прежде чем сравнивать две вещи, надо дать им чёткое определение. Про MVP примерно ясно, а вот MVVM прям нужно чётко пояснить, что вы в это вкладываете.
я в разрезе AAC  и рассказываю, если вы об этом
источник

SB

Simon Belialov in Android Architecture
mr. PESIK
Коллеги, делаю презентацию для выступления спикером. Тема "Чем MVVM лучше MVP?".  Я привожу там аргументы, собственно чем. Вот они:
1) Нет беготни туда-сюда и ссылки на вью в презенторе
2) В VM легче следить за состоянием вью
3) Это более актуальная архитектура представления
4) Легче в использовании (сомнительно)
5) Привожу в пример кейс где у меня 2 ViewPager-а с фрагментами, которые ведут себя синхронно. Один ViewPager - миниатюрка с графиками (листаемая), другой ViewPager - детализация все с теми же графиками только информации больше и графиков (листаемая). И делая фичу на MVP получилось 4 презентора (хотя это можно было бы избежать используя необязательные методы во View-интерфейсе. Но все равно кода получилось меньше, читабельность не пострадала, и вроде как ViewModel получилась более переиспользуемой. И не пришлось юзать колбэки между фрагментами, чтобы миниатюрка была на той же странице, например.
Если есть что добавить, или считаете что я не прав в некоторых пунктах, то накидывайте. Нужно понять насколько прочный и уместный у меня доклад!
+ вьюмодель ничего не знает о вью и может шариться
источник

mP

mr. PESIK in Android Architecture
Simon Belialov
+ вьюмодель ничего не знает о вью и может шариться
это я упоминаю в докладе
источник

AO

Artem Osipov in Android Architecture
Simon Belialov
+ вьюмодель ничего не знает о вью и может шариться
чем это отличается от презентера?
источник

mP

mr. PESIK in Android Architecture
Artem Osipov
чем это отличается от презентера?
презентер знает о вью, пусть и посредством абстракции
источник

mP

mr. PESIK in Android Architecture
правда это делает вью глупее
источник

mP

mr. PESIK in Android Architecture
что уже плюс для MVP
источник

mP

mr. PESIK in Android Architecture
об этом тоже сказано в докладе
источник

K

Kopusha in Android Architecture
и часто, гхм, вы шарите VM на разные вьюхи? Чуть реже чем никогда? И если шарите и потом нужно одну вьюху изменить?) Так ты слона не продашь.
источник

АЕ

Алексей Ершов in Android Architecture
Simon Belialov
Почему архитектурные компоненты это не мввм? Не могут им быть
Они и не позиционировались как MVVM, Флорина прямым текстом это говорила. Насчёт "не может быть" - тут можно долго рассусоливать, но если кратко, то нужен нормальный датабиндинг, а в андроиде всё странно с биндингом, XML, императивно-декларативным UI и всем прочим. Не хочу щас в это вдаваться)
источник

SB

Simon Belialov in Android Architecture
Artem Osipov
если сделать mvp с одной командой то будет тоже самое
тогда это будет не классический mvp. Команда одна
источник

mP

mr. PESIK in Android Architecture
Kopusha
и часто, гхм, вы шарите VM на разные вьюхи? Чуть реже чем никогда? И если шарите и потом нужно одну вьюху изменить?) Так ты слона не продашь.
если шарить вью на уровне так называемого Fragment Flow (что никто не делает), то можно нехило так сэкономить в строчках кода
источник

AO

Artem Osipov in Android Architecture
Simon Belialov
тогда это будет не классический mvp. Команда одна
это где такое написано?)
источник