Iniciar sesión Registro
Anuncios
Tu espacio publicitario
Reserva este slot exclusivo para el periodo elegido.
Comprar publicidad →
Logotipo de la comunidad de telegram - Затишна Галера
Añadido 06 ene. 2025

Затишна Галера

@Zatishna_Galera
Número de suscriptores: 2 708
Fotos: 1,340
Videos: 429
Enlaces: 1,810
Descripción:
Голова Одеського центру розробки DataArt та Delivery Director, капітан Затишної Галери, ділитимуся: завданнями із співбесід (QA/Delivery/Management), статтями, вакансіями, новинами зі світу IT. Контакт: [email protected] ; Patreon: patreon.com/CozyGalley
Fuente

Затишна Галера | iOSКомпас 🧭1️⃣5️⃣1️⃣ Завдання 151Як правильно використовувати Data-Dri...

Logotipo de la comunidad de telegram - Затишна Галера Затишна Галера @Zatishna_Galera
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