TCA — це нова MVC?

💡 Усі статті, обговорення, новини про Mobile — в одному місці. Приєднуйтесь до Mobile спільноти!

Вітаю, колеги! Запрошую поспілкуватись про переваги та недоліки The Composable Architecture, що стала популярною серед iOS-розробників.

Як ми можемо дізнатися з документації, TCA однаково може бути використаний як зі SwiftUI, так і з UIKit. І це чудово, адже в сучасних проєктах SwiftUI та UIKit часто доповнюють одне одного.

Ідея, яку TCA запозичив від Redux — єдиний State, з яким обмінюються даними різні частини застосунку. Це дозволяє бути впевненим, що на всіх екранах користувач побачить однакову кількість друзів, монет, відсотків свого прогресу в опануванні мови інопланетян, whatever. Послідовність даних — одна з ключових переваг TCA, як і Redux, перед іншими архітектурами мобільної розробки.

Але TCA — це не Redux. Якщо Redux передбачає єдиний глобальний store, що може стати громіздким та незграбним, то TCA розбиває features на маленькі компоненти: reducers, — з яких можна зібрати ті чи інші features. Такі складові легко тестувати та перевикористовувати.

Кожна Feature має State, Action, Reducer та Store. State — це, власне, дані. Action — це тип, що описує всі дії, які можуть відбутися у вашій Feature. Reducer — це функція, яка описує, як зміниться State після дії. Reducer може повернути Effect: те, що має бути виконано, базуючись на дії, що відбулася. А головний тут Store: саме сюди ви надсилатимете дії, та саме тут знаходитиметься State, за яким ви будете спостерігати.

Тут винахідники The Composable Architecture Brandon Williams та Stephen Celis розповідають про своє дітище протягом 58 годин 30 хвилин, але почати вивчення архітектури можна з туру з 7 лекцій.

Хтось каже, що TCA — це в хорошому сенсі нова MVC, тому що вона ідеально підходить для SwiftUI. У новому чарівному світі, де бал править SwiftUI, TCA може знайти настільки ж широке застосування, як колись MVC.

Хтось доводить, що насправді це нова MVC в поганому сенсі, адже в проєкт додається зайва залежність на сторонню бібліотеку. Що нібито нічим не краще, ніж масивні View Controllers.

Як і в кожній незрозумілій ситуації, останнє слово має бути за коментаторами DOU. А як інакше? Що скажете, вартує TCA додаткової залежності?

👍ПодобаєтьсяСподобалось3
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Цьому анекдоту вже 8 років. Придумайте щось нове. ;)

Combine не лягає на swift 6, тому поки з TCA не випилять combine повністю, то діла не буде

TCA — це нова MVC?

Ні, «нова MVC» — це DCI яка створена Трюгве Миккелем, автором MVC, як доповнення та розвиток ідей MVC.

Хтось каже, що TCA — це в хорошому сенсі нова MVC

Ні, це просто нава абревіатура і більше нічого.

Спробував нагуглити — більше схоже на The Clean Architecture від Дядька Боба — за все хороше, але нічого не зрозуміло, доки не купиш книжку. Коли купив — також не зрозуміло, але вже можна вихвалятися, що знаєш, як правильно усе робити.

Натомість, MVC є доволі чітко описаним патерном з діаграмами та добре окресленою зоною застосування.

але це не стосується айос розробки — у нас MVC це не те, що у інших... так вже склалося історично.
У ТСА є багато прихильників, але і багато хейтерів. Розробники Arc браузера використовували форк ТСА але відмовились від неї потім через перформанс...
Плюс відносно високий поріг входу, плюс певний оверхед... тобто для маленьких проектів не підходить через «занадто ускладнено» а для великих «занадто тормозний». Я думаю це не дозволить їй стати прямо новою МVC. Але свою нішу і долю популярності вона вже має

Для більшості проєктів це овер, що все ускладнює. У мене неоднозначне ставлення до авторів:
вони транслюють крутий гіківський контент, на якому можна покачатися та навіть отримати технічний кайф. Але це далеко не завжди сумісно з реаліями реальної розробки. І це не проблема. Просто є твори «для розвитку», та «для душі» =)

Насправді, я розумію хайп довкола TCA, бо багато розробників (особливо за рахунок роботодавця) раді тикати щось прикольне-нове-незвичайне.
Але мій висновок такий:
— підійде для дуже великого проду (* але не вважаю найоптимальнішим рішенням)
— оверхед для середніх і малих проєктах (особливо на SwiftUI)
— багато зайвого коду та логіки, несумісної з загальноприйнятими підходами (складність входу новачків у проєкт).

Я був на проєкті (ми були вдвох), де попередня команда вирішила, що RIBs чудово підійде маленькій команді з середнім проєктом. Вони погралися, зробили проєкт занадто спагетізованим, провтикали цілісність половини модулів, і врешті всіх звільнили. Боюся (але можу помилятися), що зараз з TCA та сама історія: можна гратися за рахунок роботодавця, але ризики вищі.

Підписатись на коментарі