TCA — це нова MVC?
Вітаю, колеги! Запрошую поспілкуватись про переваги та недоліки 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 додаткової залежності?
7 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів