RxJava и MVP

Ответить
Аватара пользователя
Fry
Сообщения: 183
Зарегистрирован: 07 дек 2013, 22:07

RxJava и MVP

Сообщение Fry » 02 ноя 2015, 13:36

Всем привет!

С головой ушел в изучение RxJava. Все указывает на то, что это будущее сложных приложений на Android.

Столкнулся с тем, что многие гуру рекомендуют его использовать в паре с паттерном MVP. В принципе, я понимаю почему, и как это должно работать.

Но! По сути речь идет либо о множестве дополнительных классов для каждого вью (ну или для группы вью), которая не факт что добавить читаемости и ясности в приложение. Либо мы используем сторонние либы (пока больше всего привлекает nucleus), которые существенно меняют структуру Android-приложения, заменяя Активити и Фрагменты на свои реализации.

Собственно вопрос. Как думаете, стоит ли игра свеч? Оправдан ли MVP и стоит ли его применять/изучать? Если да, то стоит ли применять либы, или городить свои решения?
Arbeit macht Fry

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: RxJava и MVP

Сообщение Mikhail_dev » 02 ноя 2015, 14:08

Мне кажется вопрос надо было начать с "Использует ли кто-то RxJava?"

Аватара пользователя
Fry
Сообщения: 183
Зарегистрирован: 07 дек 2013, 22:07

Re: RxJava и MVP

Сообщение Fry » 02 ноя 2015, 14:28

Да ладно?! "Это точно канал об аниме?..."
Arbeit macht Fry

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: RxJava и MVP

Сообщение Mikhail_dev » 02 ноя 2015, 14:45

А с чего это ты решил что RxJava на столько необходима, что работодатели пойдут на то, чтобы внедрять функциональное программирование в рабочий код объектно-ориентированного программирования? Порог вхождения в чтение кода увеличивается, ибо наду изучить RxJava. И закономерный вопрос: и ради чего?
На конференциях я видел было пару докладов, но вот эти вопросы ставили на НЕТ использование RxJava в существующих проектах,

Аватара пользователя
Fry
Сообщения: 183
Зарегистрирован: 07 дек 2013, 22:07

Re: RxJava и MVP

Сообщение Fry » 02 ноя 2015, 15:16

Лично меня на изучения RxJava подбил вот этот доклад
https://events.yandex.ru/lib/talks/3106/

Там чувак (помимо самого обзора Rx) приводит примеры задач в своем приложении, где данные подгружаются из нескольких источников (скорее всего, разные Rest-методы), часть из них кешируется, часть показывается из кеша, даже когда сети нет, может комбинироваться из кеша/из сети и так далее. И он честно говорит, что не знает, как это правильно написать без Rx. Не вообще как это сделать, а именно правильно и красиво. Я поймал себя на том, что тоже не знаю :)

>На конференциях я видел было пару докладов, но вот эти вопросы ставили на НЕТ использование RxJava в существующих проектах

Не, речь о новых проектах. Я недавно нашел способы модернизировать старые методы в реактивный поток, но это того не стоит. Rx лучше делать в новых проектах.
Arbeit macht Fry

Аватара пользователя
Fry
Сообщения: 183
Зарегистрирован: 07 дек 2013, 22:07

Re: RxJava и MVP

Сообщение Fry » 02 ноя 2015, 15:22

Ну и да, функциональное программирование уже как-то стыдно не знать :)
Arbeit macht Fry

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: RxJava и MVP

Сообщение Mikhail_dev » 02 ноя 2015, 16:20

Не, речь о новых проектах.
Вот отсюда и стоило бы начинать. И тут для работодателя вопрос: какой профит от ввода Rx ? Если он большая компания, и есть штат сотрудников, которых еще и обучить можно, то можно и ввести, но опять же, будет ли профит? А если ты небольшая компания, и у тебя работает в штате 1-2 программиста, а еще веселее если на аутсорсе, что очень часто бывает, то стоит ли вводить RxJava? Тут однозначно ответ нет.
Ошибочно полагать, что все её знают, и тем более что стыдно её не знать. Нужно думтаь не только за себя, а еще и за тех, кто будет читать твой код.
Я в последнее время довольно часто вёл дискуссии и был на них слушателем, когда дело касалось RxJava. Да, это вроде бы круто, удобно и прочее, но минусы в поддержке и в сложности входа в понимание кода.
У нас в ридтиме есть один крутой спец, который любит всё новомодное. Он знает наверное все новые и крутые либы. 10 ноября кстати будет сдавать на Oracle сертификацию. Так вот, он тоже говорил что он тоже говорил что RxJava это круто, и использовал её. Но потом как-то отказался от неё, причем по тем же причинам что я и описал.

Даже такая крутая компания как RedMadRobot, когда я общался с ними на собеседовании, и то вроде как только сейчас хотят сделать на RxJava полностью проект. Так что RxJava эт отолько инструмент, причем отнюдь не главный. Куда важнее знать:
1. Что ты скажешь про SOLID принципы?
2. Как на счет мониторов у объекта? можно ли обратиться ко второму synchronized методу, если мы в другом потоке уже выполняем какой-то код в первом synchronized методе?
3. Или быть может поговорим об пакете java.util.concurrent? Что там вместо мониторов используется?
4. Как на счет коллекций? Допустим HashMap. Что будет, если допустим мы переопределим метод hashCode, который возвращает 4 для любого объекта? Как будет работать коллекция и будет ли вообще?
5. Чем отличается HashMap от ConcurrentHashMap?

Я могу мног онапистаь вопросов, которые куда важнее, и которые спрашивают почти на каждом собеседовании в нормальню компанию. Знаешь ли ты ответы на них?
Ну и да, функциональное программирование уже как-то стыдно не знать
В области андроида совершенно неключевая вещь

Аватара пользователя
Fry
Сообщения: 183
Зарегистрирован: 07 дек 2013, 22:07

Re: RxJava и MVP

Сообщение Fry » 02 ноя 2015, 16:55

>Вот отсюда и стоило бы начинать. И тут для работодателя вопрос: какой профит от ввода Rx ? Если он большая компания, и есть штат сотрудников, которых еще и обучить можно, то можно и ввести, но опять же, будет ли профит? А если ты небольшая компания, и у тебя работает в штате 1-2 программиста, а еще веселее если на аутсорсе, что очень часто бывает, то стоит ли вводить RxJava? Тут однозначно ответ нет.

Очень умозрительно имхо. Я бы сказал, что чем больше проект, и чем сложнее логика работы с сетью и потоками, тем преимущества Rx будут заметнее.

>Ошибочно полагать, что все её знают, и тем более что стыдно её не знать. Нужно думтаь не только за себя, а еще и за тех, кто будет читать твой код.

Если понимать, как это работает, то реактивный код читается не сложно. А с учетом того, что он экономит кучу вспомогательного кода на склеивание компонентов, взаимодействия потоков, обмене данными, обработке ошибок, то проще разобраться в простой цепочки Rx, чем лапатить альтернативы.

>Даже такая крутая компания как RedMadRobot

В Яндексе, например, используют во всю.

>Куда важнее знать:

Знания Java Core - это прекрасно. Только по нему можно написать множество вопросов, по которым большинство полезет в Гугл. И еще больше вопросов, ответы на которые ты в теории знаешь, а на практике или не сталкивался, или сталкивался редко. Имхо.

> В области андроида совершенно неключевая вещь.
Не ключевая, да. Но и несложная в освоении + если есть желание освоить Rx, то будет очень полезно.
Arbeit macht Fry

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: RxJava и MVP

Сообщение Mikhail_dev » 02 ноя 2015, 17:19

В Яндексе, например, используют во всю.
Извини, но Яндекс для меня совершенно не крутая компания в Андроид разработке. Они вообще часть проектов на аутсорс отдают.
И да, откуда информация что они там во всю используют?
Знания Java Core - это прекрасно. Только по нему можно написать множество вопросов, по которым большинство полезет в Гугл. И еще больше вопросов, ответы на которые ты в теории знаешь, а на практике или не сталкивался, или сталкивался редко. Имхо.
Чего? Я базу написал которую мидлу надо знать как пить дать! Это архи важные вопросы.
Не ключевая, да.
Так почему стыдно то?
Но и несложная в освоении + если есть желание освоить Rx, то будет очень полезно.
Я бы даггер второй освоил, и робоспайс. Ну а потом бы изучил бы этот проект по архитектуре в стиле MVP - https://github.com/android10/Android-CleanArchitecture .

Аватара пользователя
Fry
Сообщения: 183
Зарегистрирован: 07 дек 2013, 22:07

Re: RxJava и MVP

Сообщение Fry » 02 ноя 2015, 17:38

>Извини, но Яндекс для меня совершенно не крутая компания в Андроид разработке. Они вообще часть проектов на аутсорс отдают.

Для меня вообще нет крутых российских контор, если уж на то пошло.
Яндекс относительно крут хотя бы популярностью своих апп, т.к. Андройд для меня - это не только разработка, но и маркетинг, и дизайн. Но это лирика )

>И да, откуда информация что они там во всю используют?

Ссылку на конференцию уже кидал.

>Я бы даггер второй освоил, и робоспайс. Ну а потом бы изучил бы этот проект по архитектуре в стиле MVP -

Не вижу связи. Даггер да, освоить нужно. А робоспайс к архитектуре вообще отношения не имеет. К тому же не развивается, к сожалению.

Я кстати Rx в связке с Ретрофитом 2 изучаю именно на замену Робоспайсу. Потенциально гораздо более мощное решение получается.
Arbeit macht Fry

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: RxJava и MVP

Сообщение Mikhail_dev » 02 ноя 2015, 21:56

Для меня вообще нет крутых российских контор, если уж на то пошло.
RedMadRobot крутая по мобильным разработкам контора.
Яндекс относительно крут хотя бы популярностью своих апп
Не, ну молодцы конечно, только поди знай, какое из их приложений действительно их. А то при таком раскладе и у мейл.ру сервис вконтакте крут.
Не вижу связи. Даггер да, освоить нужно. А робоспайс к архитектуре вообще отношения не имеет. К тому же не развивается, к сожалению.
Связи и нету, я просто расставил приоритеты необходимости изучения какого-либо материала.

Да и как бы резюмируя, еще раз повторю, что есть гораздо более важные вещи, нежели RxJava, которая является лишь альтернативой, а никак не чем-то обязательным. И да, её на самом деле на столько мало знаю народу, что работодатели и тех лиды вполне разумно не используют её. Тоже самое относится пожалуй и к лямбда выражениям.
А вот те вопросы что я написал про архитектуру, многопоточность, про коллекции, а сюда еще можно приписать дженерики - это самое важное. И никакая RxJava не сравнится с данными вопросами. И уж если говорить про "стыдно не знать", так это про именно эти вопросы, потому как на них строится весь код, а не на RxJava

Ответить