Fuente
Затишна Галера | iOSКомпас 🧭1️⃣5️⃣1️⃣ Завдання 151Як правильно використовувати Data-Dri...
599 Vistas/Alcance
2026-04-22 09:35
Mensaje №2604
#iOSКомпас 🧭1️⃣5️⃣1️⃣ Завдання 151Як правильно використовувати Data-Driven Development в сучасній iOS-розробці?Доброго здровля мої любі друзі. З вами ваш незмінний ios розробник Сергій з @badlinkschannel.🤔 Data-driven development в iOS на Swift — це момент, коли код перестає бути джерелом правди. І починають ним бути дані.Звучить як buzzword, але на практиці це досить проста зміна мислення: ти не «пишеш логіку», ти описуєш систему, яка реагує на дані.🔣 Що це означає:🔣 Замість:if user.isPremium { showPremiumBanner()} else { showAds()}
🔣 ти починаєш думати так:enum UserState { case premium case free}func render(state: UserState) -> View { switch state { case .premium: PremiumView() case .free: AdsView() }}
UI більше не вирішує «що робити». Він просто відображає поточний стан.🔣 Джерело правди: У data-driven підході є чітке правило - одне джерело правди (single source of truth)@Observablefinal class AppState { var user: User? var isLoading: Bool = false}
🔣 Весь UI — це функція від цього стану.var body: some View { if state.isLoading { ProgressView() } else if let user = state.user { ProfileView(user: user) } else { LoginView() }}
Жодної імперативної магії. Жодних «викликай це тут, а потім це там».🔣 Чому це працює➖ Менше багів - Бо немає розсинхронізації між станом і UI➖ Простіше тестувати - Ти тестуєш стани, а не сценарії кліків➖ Легше масштабувати - Новий кейс = новий стан, а не ще один if десь у ViewController🔣 Де Swift тут виграє:➖ Swift дуже добре підходить під цей стиль:➖ enum з асоційованими значеннями➖ pattern matching➖ value semantics➖ SwiftUI як декларативний UIenum ScreenState { case loading case content([Item]) case error(Error)}
🔣 і далі:switch state {case .loading: ProgressView()case .content(let items): List(items) { ... }case .error: ErrorView()}
➖ Це буквально DSL для опису станів.🔣 Де зазвичай ламаються➖ Кілька джерел правди - (UIViewController + ViewModel + ще якийсь кеш)➖ Побічні ефекти в UI - (onAppear, didSet, callbacks, які мутують стан хаотично)➖ «Трохи імперативу не зашкодить» - (спойлер: зашкодить)#️⃣ Data-driven development — це не про SwiftUI.Це про дисципліну:➖ один state➖ чисті переходи між станами➖ UI як функція від данихВсе інше — деталі реалізації.@Zatishna_Galera