
NoNick
18.12.2017
10:14:25
правда WPF MVVM
в Ксамарине он тоже юзается да?

Евгений
18.12.2017
10:17:15

Кита
18.12.2017
10:18:20

Google

Евгений
18.12.2017
10:19:02
в mvp все гораздо легче)

Kirill
18.12.2017
10:19:47

Arsen
18.12.2017
10:26:27

Кита
18.12.2017
10:34:09

Kirill
18.12.2017
10:35:41
Может и так, но у меня рука не поднимается назвать такой класс *ViewModel

Кита
18.12.2017
10:39:27
А это самая настоящая вью-модель. Просто отвечает за маленькую часть представления

Kirill
18.12.2017
10:45:26
у нас тоже для списков не ViewModel. А тоже почти POCO. Данные они сами не подтягивают, дейсвтия тоже не обрабатывают - это всё делает ViewModel для страницы. POCO содержат данные для отображения (ну и еще какие-нибудь необходимые). Так вся логика по экрану получается в одном месте.

Arsen
18.12.2017
10:47:57

Кита
18.12.2017
10:52:19
Я вижу здесь FeaturedViewModel, которая держит список вьюмоделей, каждая из которых имеет название категории, команду для “See all” и список из вьюмоделей в которых есть ссылка на картинку, название категорию и цену и если я тапаю по иконке с приложением, то тап прокидывается во вьюмодель из списка приложений, от куда я беру роутер и делаю навигацию на страницу с полной информацией о приложении, которая сама подгрузит всю дополнительную инфу по id, которую передала мне предыдущая вьюмодель.


Valeriy
18.12.2017
10:54:11
Все правильно, элементы списка это вьюмодели.

Google

Kirill
18.12.2017
10:57:57

Кита
18.12.2017
10:58:41
ну не только поэтому конечно
но одна из причин

Kirill
18.12.2017
10:59:32
Ну, значит у нас не чистая MVVM

Кита
18.12.2017
10:59:54
Потому что если в android разработке Clean architecture по крайней мере ясна и понятна и +- у всех одинакова, то у нас в Mvvm кто во что горазд

Kirill
18.12.2017
11:00:00

Кита
18.12.2017
11:00:22

Kirill
18.12.2017
11:01:05

Кита
18.12.2017
11:01:10

Kirill
18.12.2017
11:03:29

Кита
18.12.2017
11:03:40
Ведь даже microsoft говорит - бизнес-логика вся в Модели. А модель это что? Это репозиторий с Entity или Business Object. Модель это не модельные данные. Это нечто большее. А вы сразу к вьюшкам считайте прокидываете бизнес-объекты которые не должны вообще близко к вьюшкам подходить.

Kirill
18.12.2017
11:04:46

Кита
18.12.2017
11:05:02
ну судя по описанию
тоже давно ещё так же писали

Alexey
18.12.2017
11:09:54
Пересобрать*

Kirill
18.12.2017
11:11:35


Кита
18.12.2017
11:12:43
Просто потому что плодятся сущности - вью, вьюмодель, бизнес-объект простой, бизнес-объект сложный, в одном месте так в другом месте сяк. И если баги прилетают на какой-то функционал то где брать начальную точку поиска бага? Или вот джун приходит и на него фикс багов скидывается, а он не знает от куда начать - все везде по-разному или есть одна супер-вьюмодель из которой все рулится - он разберется? Если любой частью представления всегда управляет вьюмодель то ты точно знаешь что нужно искать нужную вьюмодель в папке с вьюмоделями, ставить бряки на set в пропертях и отлаживать конкретный участок кода. А если одна огромная вьюмодель, которая все держит как бы в одном месте то сколько там строк кода обычно? 200? 300? 400? как оно отлаживается? Мне допустим не очень приятно с таким классом работать. А если в процессе фикса бага я затрону и поломаю другой функционал? Есть Single Responsibility Principle и его надо придерживаться

Google

Кита
18.12.2017
11:14:36

Евгений
18.12.2017
11:14:42
В MVP у слоя презентейшена например - фрагментов бывает и больше строк кода. )

Кита
18.12.2017
11:15:30

Евгений
18.12.2017
11:16:01
да Presentor- UseCase - Service - Repo
И вот тут хотябы все проекты на джаве примерно схожи .


Kirill
18.12.2017
11:17:30
Просто потому что плодятся сущности - вью, вьюмодель, бизнес-объект простой, бизнес-объект сложный, в одном месте так в другом месте сяк. И если баги прилетают на какой-то функционал то где брать начальную точку поиска бага? Или вот джун приходит и на него фикс багов скидывается, а он не знает от куда начать - все везде по-разному или есть одна супер-вьюмодель из которой все рулится - он разберется? Если любой частью представления всегда управляет вьюмодель то ты точно знаешь что нужно искать нужную вьюмодель в папке с вьюмоделями, ставить бряки на set в пропертях и отлаживать конкретный участок кода. А если одна огромная вьюмодель, которая все держит как бы в одном месте то сколько там строк кода обычно? 200? 300? 400? как оно отлаживается? Мне допустим не очень приятно с таким классом работать. А если в процессе фикса бага я затрону и поломаю другой функционал? Есть Single Responsibility Principle и его надо придерживаться
На каждую страницу своя ViewModel. Строк кода не много, ибо не часто мобильных в приложениях должна быть сложная логика. Если она есть, то в отдельных классах. Сколько разбираться- если человек с каким-то опытом уже, то максимум час, ибо все просто.


Евгений
18.12.2017
11:18:54
Но тут уже есть загвостка. На одном экране не будет одной ViewModel если у тебя на экране есть какой-нибудь лист вью или ресайклер

Кита
18.12.2017
11:19:16
на одном экране может быть много вьюмоделей

Александр
18.12.2017
11:19:43
>загвостка
why god

Кита
18.12.2017
11:20:08
один экран может для планшета показывать 2 страницы сразу, тогда как смартфон каждую страницу по очереди

Kirill
18.12.2017
11:23:05

Евгений
18.12.2017
11:24:22
Я с ваших слов понял что у вас нет Model - Entity как в джава, правильно? Вы сразу же используете ViewModel и в нем все поля Модели?

Евгений
18.12.2017
11:24:23
Так?

Кита
18.12.2017
11:24:42
и DTO есть
Просто используется маппер
когда я прошу репозиторий дать мне данные он отдает мне например List<Entity>. Через маппер он становится например List<EntityViewModel> и уже этот лист летит биндинг-контекстом в датасорс рецайклера

Евгений
18.12.2017
11:27:33
Я думал вы прям из репо тяните EntityViewModel. Просто зачем это лишнее действие

Кита
18.12.2017
11:28:37
Таким образом слои в этой длинной цепочке не зависят друг от друга

Google


Кита
18.12.2017
11:29:55
изменения в одном слое не затрагивают работу других
Для многих задач это возможно избыточно. Но если надо тащить данные с одного сервера и частично с другого - по-другому никак. И единожды применив этот подход для связи с particle.io и сервером кастомера одновременно, стали применять его повсеместно и в других проектах. И главное решили проблему фикса багов. Они реально стали фикситься быстрее. Смотришь в описание бага и сразу понимаешь в каком слое проблема ещё до того как что-то начинаешь фиксить. Все знают что условно говоря бизнес логика в Entity или как его называют Busines Object, логика представления точно в viewmodel, данные для трансфера с сервером в DTO и если надо нафичевать фичу, то пишется бизнес-логика отдельно, логика представления отдельно, DTO для сервака и клиента отдельно. И оценка задач по другому происходит уже. Задача делится на подзадачу написания DTO, бизнес логики и логики вьюмодели и верстки и главное, что подзадачи могут шариться между участниками команды и они не будут мешать друг другу вообще никак и нигде. Profit очень серьезный


Ssjuk
18.12.2017
12:56:37
привет, никто в xamarin.forms на андроиде не сталкивался с тем что contentpage внизу обрезанная?

Almaz
18.12.2017
13:02:06
Поддерживаю, что если элемент списка ViewModel, то так проще масштабировать и спать спокойнее. Но это увеличивает время разработки.

Данил
18.12.2017
14:32:56
Подскажите, нужно сделать приложение для платформ Windows xp, 7,8, 10, Android и iPhone. Смотрю в сторону xamarin как универсальной платформы. Программа будет представлять из себя мобильный клиент для сайта поддержки, соответственно никакой магии и никаких специальных визуальных эффектов или чего то ещё не нужно.
Знаю c# по этому и смотрю на xamarin

Admin
ERROR: S client not available

Gleb
18.12.2017
14:38:33
XP бы выбросить
И было бы ок

Mark
18.12.2017
14:39:37

Данил
18.12.2017
14:40:26

Gleb
18.12.2017
14:40:55
Wpf тогда нам не взлетит, насколько я помню

Данил
18.12.2017
14:41:36
А в чем вопрос?
Да я не знаю, почитал переписку тут и так и не понял на чем именно делать. Есть аналог в виде xamarin form как я понял а есть что то ещё... Что выбрать?

Gleb
18.12.2017
14:42:41
Можно на windows.forms для XP + 7 сделать
И xamarin.forms для 8, 10 и мобилок
Логику общую сделать (data access layer, model или что там у вас по архитектуре внизу)
А вот ui - в зависимости от платформы
Но их хотя бы будет 2 по большому счету
А не 6

Данил
18.12.2017
14:44:37

Google

NoNick
18.12.2017
14:45:32
+ не было бы WinXP...
я бы писал WPF на 4.7 фреймворке а не 4.0...

Данил
18.12.2017
14:47:08
Но увы, xp есть. Это ладно для сайта есть ещё обязанность по совместимости с ie 8. :)
Можете посоветовать книжку или сайт по xamarin.form?

Max
18.12.2017
14:48:03

NoNick
18.12.2017
14:48:54
могу этот сайт посоветовать если на русском
https://metanit.com/sharp/xamarin/
вообще не учил XAmarin Forms но как сайт он годный, я по нему моногейм и wpf учил

Slava
18.12.2017
14:50:23

Max
18.12.2017
14:50:38
Метанит... Ну разве что названия того, что нужно прочитать в доках

Arkady
18.12.2017
15:02:07
Всегда останавливало от использования ксамарин - отсутствие модуля оплаты от банков под эту платформу.
и оказывается тиньков успел ее таки сделать:
https://github.com/amalsher/Tinkoff.Xamarin

Karim
18.12.2017
15:11:52
Привет всем, кто-нибудь сталкивался с проблемой, когда AbsoluteLayout вставляешь в ScrollView, привязываешься к событие scrollView.Scrolled, а там ничего не меняется при скролле?

Kirill
18.12.2017
15:20:42

Arkady
18.12.2017
15:24:10

Kirill
18.12.2017
15:25:13

Arkady
18.12.2017
15:25:54
в случае с тиньковым - у меня не получилось совсем.. пришлось писать приложение на чистом андроиде.

Кита
18.12.2017
18:01:59

Mykhail
18.12.2017
18:12:40
Никто не сталкивался, что в релиз моде в Иосе не вызывается ReceivedRemoteNotification когда приложение активно?
Если свернуто - все ок - вижу пуш нотификацию
В дебаге тоже работает
iOS 11