Я не начинающий разработчик, но на практике никогда не использовал MVI. Сейчас занимаюсь личным проектом, пишу на kmm (курс по kmm =)) и встала делема с нужной архитектурой (слышал, что для kmm - mvi the best of the best, но окончательного понимания этого слуха не было). А данный видос - это исчерпывающий ответ на то, что будет удобно юзать (нашёл orbit mvi, осваиваю). Спасибо вам огромное за данный материал!!
Парадигма - описание в науке и философии паради́гма означает определённый набор концепций или шаблонов мышления, включая теории, методы исследования, постулаты и стандарты, в соответствии с которыми осуществляются последующие построения, обобщения и эксперименты в области. Первоначально слово использовалось в лингвистике и риторике. Википедия. По мне как MVI это тот же шаблон проектирования, использующий композицию, объекты никуда не делись, передаются в качестве параметров, проверяются на тип, MVP же, как архетиктурное решение над MVI для порядка в коде.
Композиция это несколько другое. Так можно любую функцию композицией назвать. Насчёт слова парадигма, то в разрезе программирования она имеет вполне конкретные приложения, а именно новой парадигмой стали функциональное программирование, ООП и там не помню ещё третье что-то было. Я это слово использовал, чтоб как-то отделить просто архитектурный паттерн от действительно в каком-то смысле нового подхода
ruclips.net/video/IRCv3mkc6jY/видео.html "Его идея в том, чтобы у вас было некое состояние вашего экрана, которое конфигурируется одной единственной моделью с кодовым названием state. Те, кто смотрел мои видео, возможно помнят, что я говорил, что некоторые под моделью подразумевают иное, вот этот как раз оно" Вот зачем вводить людей в заблуждение, пользуясь понятиями, у которых совершенно иной смысл? Состоение View описывает ViewState, вот как можно сюда приплести слово "модель"? Если в MVI Model - это черный ящик с бизнес логикой, у которого на входе интенты, а на выходе ViewState. ruclips.net/video/IRCv3mkc6jY/видео.html "View отправляет иммутабельную модель в качестве интента в обработчик. Дальше происходит обработка сигнала и в ответ прилетает такая же иммутабельная модель со стейтом". Дальше из-за этого непонимания разницы между Model и ViewState начинается какая то дичь. В MVI View ничего не знает про Model, а делает ровно две вещи: 1) Отправляет Intent'ы, подписывается на поток ViewState. View не занимается хранением текущего ViewState, он должен быть Stateless, соотственно он никак не может "отправлять модели". Текущее состояние ViewState хранится в Stateful Model. ruclips.net/video/IRCv3mkc6jY/видео.html "И вот люди раскопали, что изначально, когда появились эти паттерны, моделью называлась вот эта та самая штука, которая отображает состоение вашего View" Таже ошибка. Штука, которая отображает состояние UI (корректнее было бы сказать "UI", а не "View"), внезапно называется View. View получает свое состояние (ViewState) и ОТОБРАЖАЕТ его - это его прямая отвественность. И уж говорить, что Model (в любом архитектурном шаблоне) что-то отображает, это насколько надо быть безграмотным. Model в MVI еще раз - это бизнес логика, которая занимается ФОРМИРОВАНИЕМ ViewState. Досматривать это видео сил не хватило. Думал, что почерпну что-то новое из ролика или хотя бы услышу, что уже знаю. Но оказалось что автор не шарит в теме MVI.
В своих проектах всегда использую MVI, нравится гораздо больше других подходов - защита от неконсистентного состояния, можно хранить историю стейтов, можно сделать time-travel debug и даже потестить удобно, в общем всё строго и чётко. Но есть минус, что подход довольно сложен для джунов. И насчёт тех проблем с "неизящностью" использования: конечно. пример из видео написан на коленке, поэтому и неизящно) Желательно для MVI написать стейт-машину, например на RxJava, или взять уже существующий фреймворк. Тогда как раз-таки всё будет кратко и красиво. Спасибо за видео!
можно ссылку на код? Немного не пойму одну вещь, а Вы про нее не рассказали. Заодно гляну как корутины организовывать в проекте. А, вот что еще хотел спросить. Если будет время, сделайте видео по flow / cold stream, channels в корутинах. Дока у Котлина не ахти по этим темам, а вещи вроде интересные, тем более что они повторяют функционал RxJava, но реализуются значительно приятнее.
Здравствуйте, будет ли урок по созданию выпадающего списка в Navigation Drawer Activity, чтобы при нажатии на текст выпадал список, на джаве был onNavigationItemSelected, но на котлине он, не вызывается, а если создать такую функцию, то другие команды не работаю и вообще путаница происходит.
Возможно будет. Вообще Navigation Drawer уже морально устарел, поэтому не факт, но вы можете задать тему следующего видео в группе в ВК vk.com/mdeveloper
Хм ну у нас порядка 60 -80 экранов (не считал) и редко когда файл выходит за 600 строк. Если честно то есть линтер который не даст это скомпилировать. Это при том что у нас есть все соответствующие большому проекту аналитики и так далее
Лайк за классное объяснение, но хотелось поставить минус использование такой паршивой дряни, как яндекс и контактик. Автор, забудь об отечественной этой нечисти, пользуйся хромом и фейсбуком, как вариант, не позорься.
@@MobileDeveloper Ну почитайте ж ниже даже, просто в голове не укладывается, какой же ВК уже в 20 году? Это же даже не моветон, а хуже. Еще бы одноклассников не хватало. Я подписался на Ваш канал, потому что вы круто объясняете. Не сердитесь на меня, но правда... контакт и яндекс это бред..
Отписывайтесь обратно. Я могу за 5 минут буквально разложить что ваш Фейсбук это хуита позорная, написанная ебаными даунами. И любой, кто хоть раз с их сдк или апи работал меня поддержит
Меня контент и аудитория очень даже устраивает, а тем более не понятно как связан Яндекс браузер и контент. Это тут причём вообще? Он тупо удобнее. Причём в разы. А ваш хром это чёрная дыра в памяти, которая бесконтрольно отжирает все что ему скормят. Вам показать скриншот где хром откушал 1.24 терабайта блядь оперативки? Вы же объективно понимаете, что спорите с программистом. Я буквально знаю как это все устроено внутри.
Алексей спасибо большое! Благодаря тебе и твоему трубу могу развиваться, как начинающий разработчик!
Всегда пожалуйста )
Я не начинающий разработчик, но на практике никогда не использовал MVI. Сейчас занимаюсь личным проектом, пишу на kmm (курс по kmm =)) и встала делема с нужной архитектурой (слышал, что для kmm - mvi the best of the best, но окончательного понимания этого слуха не было). А данный видос - это исчерпывающий ответ на то, что будет удобно юзать (нашёл orbit mvi, осваиваю). Спасибо вам огромное за данный материал!!
Кратко и четко объяснил. Однозначно лайк
Офигенный канал и видео интересные, главное не забрасывать!!!!
Спасибо )
Парадигма - описание в науке и философии паради́гма означает определённый набор концепций или шаблонов мышления, включая теории, методы исследования, постулаты и стандарты, в соответствии с которыми осуществляются последующие построения, обобщения и эксперименты в области. Первоначально слово использовалось в лингвистике и риторике. Википедия.
По мне как MVI это тот же шаблон проектирования, использующий композицию, объекты никуда не делись, передаются в качестве параметров, проверяются на тип, MVP же, как архетиктурное решение над MVI для порядка в коде.
Композиция это несколько другое. Так можно любую функцию композицией назвать. Насчёт слова парадигма, то в разрезе программирования она имеет вполне конкретные приложения, а именно новой парадигмой стали функциональное программирование, ООП и там не помню ещё третье что-то было. Я это слово использовал, чтоб как-то отделить просто архитектурный паттерн от действительно в каком-то смысле нового подхода
четко объяснил, спасибо
Не нашла в github код которые был показан в видео, на какой бранч смотреть?
С тех пор я все переписал много раз уже. Последняя актуальная версия лежит в GitHub JetHabit
Хотел бы увидеть, как при данном подходе работать с показом диалога
Супер, с нетерпением ждем Ваши видео!
Спасибо!)
ruclips.net/video/IRCv3mkc6jY/видео.html "Его идея в том, чтобы у вас было некое состояние вашего экрана, которое конфигурируется одной единственной моделью с кодовым названием state. Те, кто смотрел мои видео, возможно помнят, что я говорил, что некоторые под моделью подразумевают иное, вот этот как раз оно"
Вот зачем вводить людей в заблуждение, пользуясь понятиями, у которых совершенно иной смысл? Состоение View описывает ViewState, вот как можно сюда приплести слово "модель"? Если в MVI Model - это черный ящик с бизнес логикой, у которого на входе интенты, а на выходе ViewState.
ruclips.net/video/IRCv3mkc6jY/видео.html "View отправляет иммутабельную модель в качестве интента в обработчик. Дальше происходит обработка сигнала и в ответ прилетает такая же иммутабельная модель со стейтом".
Дальше из-за этого непонимания разницы между Model и ViewState начинается какая то дичь. В MVI View ничего не знает про Model, а делает ровно две вещи: 1) Отправляет Intent'ы, подписывается на поток ViewState. View не занимается хранением текущего ViewState, он должен быть Stateless, соотственно он никак не может "отправлять модели". Текущее состояние ViewState хранится в Stateful Model.
ruclips.net/video/IRCv3mkc6jY/видео.html "И вот люди раскопали, что изначально, когда появились эти паттерны, моделью называлась вот эта та самая штука, которая отображает состоение вашего View"
Таже ошибка. Штука, которая отображает состояние UI (корректнее было бы сказать "UI", а не "View"), внезапно называется View. View получает свое состояние (ViewState) и ОТОБРАЖАЕТ его - это его прямая отвественность. И уж говорить, что Model (в любом архитектурном шаблоне) что-то отображает, это насколько надо быть безграмотным. Model в MVI еще раз - это бизнес логика, которая занимается ФОРМИРОВАНИЕМ ViewState.
Досматривать это видео сил не хватило. Думал, что почерпну что-то новое из ролика или хотя бы услышу, что уже знаю. Но оказалось что автор не шарит в теме MVI.
Ну и слава богу )) предлагаю вам больше ничего не смотреть, все рано ничего интересного не узнаете )
5:28 "Ваще похоже на вредоносный код". Алексей, ваш коллега смотрит код в прямом эфире? :)))
Хахах) нее) это там другого касалось )
Да это он об яндекс браузере говорит
Щас сделаю кофеёк и буду ознакамливаться с новым интересным видосом)
Круто!)
В своих проектах всегда использую MVI, нравится гораздо больше других подходов - защита от неконсистентного состояния, можно хранить историю стейтов, можно сделать time-travel debug и даже потестить удобно, в общем всё строго и чётко. Но есть минус, что подход довольно сложен для джунов.
И насчёт тех проблем с "неизящностью" использования: конечно. пример из видео написан на коленке, поэтому и неизящно)
Желательно для MVI написать стейт-машину, например на RxJava, или взять уже существующий фреймворк. Тогда как раз-таки всё будет кратко и красиво.
Спасибо за видео!
Был бы очень признателен если бы вы расшарили пример сложного флоу на MVI. Я мог бы это как-то показать на стриме и прокомментировать
Очень зашло. В связке с rx решаются проблемы больше 4 cостояний
Ну да здесь пример очень простенький )
можно ссылку на код? Немного не пойму одну вещь, а Вы про нее не рассказали. Заодно гляну как корутины организовывать в проекте.
А, вот что еще хотел спросить. Если будет время, сделайте видео по flow / cold stream, channels в корутинах. Дока у Котлина не ахти по этим темам, а вещи вроде интересные, тем более что они повторяют функционал RxJava, но реализуются значительно приятнее.
Спасибо за наводку, изучу. Ссылку на код вечером добавлю
@@MobileDeveloper жаль, так и не добавили))
Elena Monakhova добавил, но на другой репозиторий, однако, там тоже самое )
@@MobileDeveloper спасибо!!!
а вы смотрели исходники duckduckgo? если не ошибаюсь, то он использует эту архитектуру
Нет, а ссылочку дадите?)
@@MobileDeveloper на гитхабе
@@MobileDeveloper скинул. Если отобразится ссылка
Здравствуйте, будет ли урок по созданию выпадающего списка в Navigation Drawer Activity, чтобы при нажатии на текст выпадал список, на джаве был onNavigationItemSelected, но на котлине он, не вызывается, а если создать такую функцию, то другие команды не работаю и вообще путаница происходит.
Возможно будет. Вообще Navigation Drawer уже морально устарел, поэтому не факт, но вы можете задать тему следующего видео в группе в ВК
vk.com/mdeveloper
о архитектуре VIPER можете сделать видео
Она не очень отличается от Clean Swift, но запрос понял хорошо :)
Сделайте, пожалуйста видео по Proguard
Записал) вы можете влиять на очерёдность видео в группе ВКонтакте
@@MobileDeveloper Супер, спасибо за ответ)
Было бы неплохо как-то графически разнообразить теорию. А то на слух очень сложно даётся.
Со временем будет, но пока это слишком удлиняет цикл релиза видео, поэтому в этом видео так
Спасибо! А где ссылочки на статьи?))
Блин.. всегда забываю что-нибудь)
@@MobileDeveloper снова забыли)
Бля собственно это оно и есть
Не очень понял )
@@MobileDeveloper сообщение вылезло, в тему) В видео.
Где ссылка на статьи?
Забыл ;(
@@MobileDeveloper так можно отдельным комментарием и закрепить его.
Я, конечно, не эксперт, но тебе не кажется, что тройная вложенность условных операторов на фрагменте это ну максимально такое себе?
Конечно. Видно же что я особо не думал над обработкой )) здесь я показываю и рассказываю про другое
P.S. Можно этот кусок как блок-схему воспринимать
@@MobileDeveloper Мне кажется, что стоит написать дисклеймер какой-нибудь )
Чет не вижу как это сделать силами ютуба )
Для маленьких проектов норм, но все становится ужасно когда интерактор разрастается к 1к+ строчек.
Хм ну у нас порядка 60 -80 экранов (не считал) и редко когда файл выходит за 600 строк. Если честно то есть линтер который не даст это скомпилировать. Это при том что у нас есть все соответствующие большому проекту аналитики и так далее
Что по ММРу у автора видео в Доте?
Все очень плохо )))
Лайк за классное объяснение, но хотелось поставить минус использование такой паршивой дряни, как яндекс и контактик. Автор, забудь об отечественной этой нечисти, пользуйся хромом и фейсбуком, как вариант, не позорься.
Может я как-то без вас разберусь как мне жить? Без сопливых скользко как говорится
@@MobileDeveloper Ну почитайте ж ниже даже, просто в голове не укладывается, какой же ВК уже в 20 году? Это же даже не моветон, а хуже. Еще бы одноклассников не хватало. Я подписался на Ваш канал, потому что вы круто объясняете. Не сердитесь на меня, но правда... контакт и яндекс это бред..
Отписывайтесь обратно. Я могу за 5 минут буквально разложить что ваш Фейсбук это хуита позорная, написанная ебаными даунами. И любой, кто хоть раз с их сдк или апи работал меня поддержит
@@MobileDeveloper с точки зрения апи и серверной я согласен - фб накосячили с пхп и реакт их тоже непонятка... Но речь о контенте и аудитории
Меня контент и аудитория очень даже устраивает, а тем более не понятно как связан Яндекс браузер и контент. Это тут причём вообще? Он тупо удобнее. Причём в разы. А ваш хром это чёрная дыра в памяти, которая бесконтрольно отжирает все что ему скормят. Вам показать скриншот где хром откушал 1.24 терабайта блядь оперативки? Вы же объективно понимаете, что спорите с программистом. Я буквально знаю как это все устроено внутри.