Использование принципов XcodeGen и чистой архитектуры.
В этой статье мы подробно рассмотрим, как разделить приложение iOS на более мелкие модули. Мы собираемся использовать XcodeGen, принципы чистой архитектуры, шаблоны Xcode и многое другое. Для пользовательского интерфейса мы будем использовать SwiftUI, а для навигации — UIKit.
Короче говоря, вот что вы узнаете к концу статьи:
- Как разделить iOS-приложение на слои в соответствии с подходом «Чистая архитектура».
- Как предотвратить циклические зависимости.
- Как использовать XcodeGen для модульности приложения.
- В чем заключается подход интерфейсных модулей и как реализовать навигацию в модульных приложениях.
- Как генерировать диаграммы зависимостей простым вызовом командной строки с помощью GraphViz.
- Доступны другие инструменты модульности iOS.
Готовый демо-проект доступен на GitHub.
Демо-приложение
Давайте посмотрим на демо-приложение, которое мы собираемся модульизировать:
Как мы видим, у нас есть четыре экрана: «Вход», «Цитаты», «Детали цитаты» и «Настройки». Мы планируем сделать каждую из них отдельной функцией.
Поток выглядит следующим образом:
- Экран «Войти» отображается в том случае, если пользователь еще не вошел в систему. В противном случае нам открывается экран «Котировки».
- При нажатии на кнопку «Войти» пользователь проходит аутентификацию и отображается экран «Котировки».
- Нажатие на конкретную цитату приводит нас к экрану «Детали цитаты», на котором мы также можем удалить цитату, нажав кнопку «Удалить цитату».
- Как только происходит удаление котировки, мы автоматически возвращаемся к экрану «Котировки», на котором удаленная котировка больше не отображается. Эта функция включена, чтобы продемонстрировать, как два изолированных объекта могут взаимодействовать друг с другом.
- Кроме того, поскольку у нас есть панель вкладок, мы можем перейти к экрану «Настройки», на котором мы можем выйти, нажав…