ДОСЛІДЖЕННЯ ПРОБЛЕМИ МІГРАЦІЇ MVVM АРХІТЕКТУРИ НА СУЧАСНІ IOS-ДОДАТКИ ПОБУДОВАНІ НА SWIFTUI

Автор(и)

DOI:

https://doi.org/10.32782/IT/2024-2-20

Ключові слова:

архітектура SwiftUI, MVC, MVVM, MV, iOS розробка

Анотація

Досвідчені розробники програмного забезпечення з багатьма роками досвіду при переході на новий технічний стек можуть, не помічаючи цього, створювати собі додаткові складності в новому оточенні, шляхом перевикористання свого минулого досвіду в новому контексті. Це працює в багатьох випадках, але іноді, це може додавати не потрібної комплексності проєкту, що збільшує кількість коду та ускладнює його підтримку та розширення. В проєктах побудованих для екосистеми Apple все будується навколо бібліотеки, на основі якої буде побудовано графічний інтерфейс додатку. Абсолютна більшість розробників в цій екосистемі починала свій шлях з фреймворків створених компанією Apple UIKit або AppKit. Мета роботи. В рамках статті розглянута проблема використання архітектури MVVM для додатків, інтерфейс яких, побудований на SwiftUI. Дослідження спрямоване на висвітлення використання готових, вбудованих у SwiftUI рішень, для отримання переваг концептуально закладених в MVVM архітектуру не використовуючи її. Також, була розглянута проблема часто не правильного розуміння зони відповідальності Model шару. Методологія. Проведено теоретичний аналіз декількох архітектур, які широко використовуються у побудові додатків в екосистемі Apple. Для наочності, створені числені приклади для охоплення як простих, так і більш складних випадків. Наукова новизна. Компанія Apple у своїх навчальних матеріалах WWDC по SwiftUI ніколи не робила акцент на архітектурі додатків, але наводила численні приклади використання нових фреймворків. Для написання статті були розглянуті та проаналізовані наявні навчальні матеріали які стосуються обраної теми. Було відстежено причинно-наслідковий звʼязок непотрібного ускладнення коду при переході з UIKit/AppKit на SwiftUI через вплив минуло досвіду розробника. Було введено термін MV архітектури, яка є нативною для SwiftUI додатків. Висновки. У результаті проведеного дослідження було визначено ряд аргументів згідно яких, використання MVVM архітектури в додатку, інтерфейс якого побудовано на SwiftUI, є недоречним та зайвим. Також, було окреслено ряд проблем які виникають при використанні цього шаблону та як їх уникнути. Було сфокусовано увагу на конкретних важливих деталях реалізації всіх шарів додатку використовуючи MV архітектуру.

Посилання

Fauzi Sholichin, Monh Adham Bin Isa, Shahliza Abd Halim, Muhammad Firdaus Bin Harun, Review of iOS Architectural pattern for testability, modifiability, and performance quality, 2019.

Robert Mejia, Declarative and Imperative Programming using SwiftUI and UIKit, 2019. URL: https://medium.com/@rmeji1/declarative-and-imperative-programming-using-swiftui-and-uikit-c91f1f104252

Apple Developer Documentation, SwiftUI. URL: https://developer.apple.com/documentation/swiftui/4. Baeldung, What is Pojo Class?, 2024. URL: https://www.baeldung.com/java-pojo-class

Apple Developer Documentation, Cocoa Core Competencies. URL: https://developer.apple.com/library/archive/documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html

Estefanía García Gallardo, What is MVVM Architecture?, 2023. URL: https://builtin.com/softwareengineering-perspectives/mvvm-architecture

Apple Developer Documentation, Model data. URL: https://developer.apple.com/documentation/swiftui/model-data

Apple Developer Documentation, Managing model data in your app. URL: https://developer.apple.com/documentation/swiftui/managing-model-data-in-your-app

Chris Eidhof, Matt Gallagher, Florian Kugler, App Architecture: iOS Application Design Patterns in Swift, 2018.

Apple Developer Documentation, Migrating from the Observable Object protocol to the Observable macro. URL: https://developer.apple.com/documentation/swiftui/migrating-from-the-observable-objectprotocol-to-the-observable-macro

Apple Developer Documentation, ObservationIgnored. URL: https://developer.apple.com/documentation/Observation/ObservationIgnored()

##submission.downloads##

Опубліковано

2024-07-31