Страница 1 из 1

RxJava и MVP

Добавлено: 02 ноя 2015, 13:36
Fry
Всем привет!

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

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

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

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

Re: RxJava и MVP

Добавлено: 02 ноя 2015, 14:08
Mikhail_dev
Мне кажется вопрос надо было начать с "Использует ли кто-то RxJava?"

Re: RxJava и MVP

Добавлено: 02 ноя 2015, 14:28
Fry
Да ладно?! "Это точно канал об аниме?..."

Re: RxJava и MVP

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

Re: RxJava и MVP

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

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

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

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

Re: RxJava и MVP

Добавлено: 02 ноя 2015, 15:22
Fry
Ну и да, функциональное программирование уже как-то стыдно не знать :)

Re: RxJava и MVP

Добавлено: 02 ноя 2015, 16:20
Mikhail_dev
Не, речь о новых проектах.
Вот отсюда и стоило бы начинать. И тут для работодателя вопрос: какой профит от ввода 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?

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

Re: RxJava и MVP

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

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

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

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

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

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

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

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

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

Re: RxJava и MVP

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

Re: RxJava и MVP

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

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

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

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

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

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

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

Re: RxJava и MVP

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

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