home.social

#mvvm — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #mvvm, aggregated by home.social.

  1. Coordinator в iOS: как я перестал бояться кнопки «Назад» и полюбил навигацию

    Эта статья - логическое продолжение нашего погружения в архитектуру. Если в первой части мы навели порядок внутри «черного ящика» под названием ViewModel, то здесь мы выйдем за его пределы. Вы узнаете, как выпилить логику переходов из ViewControllers и ViewModels, почему вызов navigationController?.pushViewController() прямо в экшене кнопки - это архитектурный тупик, и как построить систему навигации, которая не превратит ваш проект в спагетти при добавлении десятого экрана. Мы разберем концепцию Child Coordinators, решим проблему утечек памяти (спойлер: системная кнопка "Назад" - ваш враг) и обсудим, выжил ли этот паттерн в эпоху SwiftUI. Продолжим

    habr.com/ru/articles/991812/

    #ios #swift #архитектор #mvvm #coordinator #mobile

  2. Технический гайд по сторис ч.2: багфиксы, оптимизация, новые фичи и +350% к переходам

    Привет! Меня зовут Владислав Фальзан, я работаю android-разработчиком в М2. Наша команда мобильной разработки развивает приложение — онлайн-платформу для решения вопросов с недвижимостью. Основные пользователи приложения — физические лица (B2C) и риелторы (B2B2C). Эта статья — продолжение технического гайда для android-разработчиков, которые хотят реализовать и внедрить полный цикл сторис у себя в приложении с использованием: Compose, MVVM, Coroutines flow и правил чистой архитектуры.

    habr.com/ru/companies/m2tech/a

    #android #ddd #compose #stories #mvvm #kotlin #coroutines #dagger #clean_architecture

  3. Секреты мобильной разработки в логистике: разгоняем MVVM до максимума

    Меня зовут Саша, я уже шестой год помогаю упрощать логистические интерфейсы в Логистике Маркета. Сегодня я хочу поделиться, как с помощью грамотно подобранной архитектуры нам удалось упростить, стандартизировать и даже ускорить разработку мобильных приложений логистики, которых у нас очень много: приложение для курьеров, приложение для пунктов выдачи заказов, приложения для сортировочных центров и так далее.

    habr.com/ru/companies/yandex/a

    #мобильная_разработка #mvvm #flutter #flutter_app_development

  4. Business Process Notation как подход к организации кода в проекте по разработке мобильного iOS приложения

    Постановка проблемы На сегодняшний день наиболее известны такие архитектурные паттерны как MVC, MVVM, MVP, Viper, Clean Code. Все они в той или иной мере работают с тремя основными сущностями - Модель, Вью, Контроллер, добавляя время от времени некоторые дополнительные, например, Presenter. Вторая общая особенность данных архитектурных паттернов состоит в том, что названные выше сущности выделяются и классифицируются исходя из их технических характеристик. Например, Вью - это то, что отображает данные на экране, Модель - содержит в себе данные и их обработку, а Контроллер осуществляет взаимодействие между ними. Но эти характеристики не отражают сущности приложения в целом. Это как если бы мы разделили воду на водород и кислород и пытались бы из их особенностей понять сущность воды. Фрагментарность используемых сущностей и отсутствие целостного видения приложения приводит к общеизвестным проблемам, связанным с трудностями понимания кода и его управлением. Отсюда, ни один из этих паттернов не гарантирует, что на определённом этапе разработки приложения не возникнет ситуация, когда код станет тяжеловесным и очень сложным для управления. Именно в такие моменты приходится переосмысливать общую архитектуру проекта и отвечать на вопросы “Зачем нужен тот или иной код, какую задачу он решает?”, “Где расположен код, реализующий ту или иную функциональность и как он работает?”. И т.д. Продолжая пример с изучением воды следует сказать, что единицей её анализа является молекула воды. Это мельчайшая частица воды, которая тем не менее содержит в себе все её свойства. В программе такой мельчайшей и одновременно целостной единицей является задача, которую решает тот или иной блок кода. Отсюда, возникла идея использовать в качестве отправного пункта для организации кода именно те задачи, которые этот код решает. При этом, задача понимается как бизнес-процесс.

    habr.com/ru/articles/866376/

    #ios_development #business_process #architecture_pattern #организация_кода #навигация_проекта #MVC #MVVM #VIPER #модель_приложения #swift

  5. Как я писал суперкастомизированное Android-приложение в 2024 году

    Как я писал супер кастомизированное Android приложение в 2024 году В начале года у меня появилась прикольная идея: сделать Android-приложение, которое будет показывать анимации для алгоритмов сортировки. Чтобы вы сразу поняли, что представляет из себя приложение, на GitHub есть скрины и короткие видео. Давайте по кусочкам разберём мой проект. Читать дальше

    habr.com/ru/companies/ruvds/ar

    #ruvds_статьи #android #android_view #kotlin #application #algorithms #sorting_algorithms #viewmodel #viewmodelprovider #sparse_array #custom_view #bitwise_operators #mvvm #mvi

  6. Как написать Android приложение, которое не будет стыдно положить в портфолио. Гайд для новичков в Android разработке

    Гайд в котором мы напишем с вами Android-приложение с нуля, используя лучшие архитектурные подходы – Clean Architecture и MVVM с элементами MVI , они обеспечат поддерживаемость, тестируемость и масштабируемость приложения, что особенно важно для сложных и долгосрочных проектов.

    habr.com/ru/articles/854450/

    #Kotlin #android #jetpack #jetpack_compose #Android_разработка #Clean_Architecture #MVVM #MVI #Создание_Android_приложений #Архитектурные_паттерны

  7. Стэнфордский курс CS193P “Разработка iOS приложений в SwiftUI” Весна 2023: русскоязычный конспект с адаптацией к iOS 17

    Если вы хотите получить фундаментальные знания по разработки iOS приложений с помощью SwiftUI , вам следует пройти стэнфордский курс CS193P. Предложенные в весеннем семестре 2023 года лекции Стэнфордского курса CS193P «Developing Application for iOS with SwiftUI» («Разработка приложений для iOS с использованием SwiftUI») — это уже 3-я реинкарнация курса CS193P с фреймворком SwiftUI . В настоящий момент действуют Xcode 15 / iOS 17, которые были представлены на WWDC 2023 уже после завершения курса CS193P, наиболее значимое обновление внесено в механизм реактивного UI в SwiftUI (макрос @Observable против протокола ObservableObject ). В иллюстрированных русскоязычных конспектах этого курса сделаны пометки, касающиеся изменений в iOS 17. Для большинства Лекций представлена версия с использование макроса @Observable вместо протокола ObservableObject , в ряде случаев это потребовало нетривиальных решений.

    habr.com/ru/articles/816995/

    #CS193P_2023 #стэнфордский_университет #swift #swiftui #functional_programming #declarative_ui #mvvm #mvi #@binding #@published

  8. I made a "template" app. Hopefully, I can use it to build other apps from.
    It needs some work, including adding my Theme to it. Probably much more tidying, too!
    Comments appreciated.

    #code #kotlin #mvvm #hilt

    github.com/ArmouredWizard/Basi

  9. If I put display in my Main Activity, along with a ViewModel, Hilt injects my UseCase successfully, and all is good
    If I use NavGraph to call a different Screen, along with it's ViewModel, the ViewModel will not instantiate.
    If I remove Hilt from the ViewModel, and manually call the UseCase, all is good.
    I do not know what I am missing, and have spent a lot of time trying to figure out the problem, to no avail.

    #code #kotlin #jetpackCompose #hilt #navigation #mvvm

  10. Cannot find any examples of the code structure I'm using.
    I am finding contradictory ways of doing things.
    Spent all day getting nowhere. Again.
    Can't see how the extra complexity is helping.
    Am at my wits' end.

    #code #kotlin #hilt #MVVM

  11. I have been doing some mobile development lately and BOY HOWDY is it a mess.

    Today, all I wanted to do was get Dependency Injection working with #hilt and #dagger, and ended up down a rabbithole of #MVVM, re-composition and data binding.

    And I've *still* no idea what I'm doing.