🆓 Эволюция архитектуры iOS приложения TripadvisorОчень актуальный для меня статья про опыт миграции команды Tripadvisor с MVVM-C на модную TCA. Зачем?
Проблемы🔴Навигационная энтропия: координаторы создают сеть навигационных возможностей, трудно задокументировать
🔴Зависимость от UIKit: архитектура coordinator привязывает к контроллерам UIKit, несовместима с SwiftUI
🔴Трудности в разработке: сложность для новых разработчиков, необходимость многократного дублирования кода
🔴Проблемы с Combine: асинхронный характер Combine усложняет отладку
Требования к новой архитектуре🟣Простая, предсказуемая навигация
🟣Совместимость с SwiftUI
🟣Устранение дублей
🟣Снижение барьеров для входа новых разработчиков
🟣Хорошо документированная архитектура
Преимущества TCA🟡Навигация на основе состояния, соответствующая SwiftUI
🟡Исчерпывающие возможности тестирования
🟡Встроенная поддержка асинхронности
🟡Документация и поддержка сообщества
Новые знания и уроки🔵Изменение ментальной модели с действий на состояние
🔵Проблемы с производительностью и иерархическим моделированием
🔵Использование мутаторов для совместного использования логики мутации
Преимущества🟢Уменьшенный объем кода на 15-30%
🟢Устранение шаблонного кода координатора, дублированной обработки событий, упрощенная логика навигации
🟢Ускорение разработки и снижение нагрузки на техническое обслуживание
🟢Более надежный код, улучшенный охват тестированием, ускоренные циклы разработки
🟢Улучшенная интеграция SwiftUI, более четкая архитектура