Использование принципов XcodeGen и чистой архитектуры.

В этой статье мы подробно рассмотрим, как разделить приложение iOS на более мелкие модули. Мы собираемся использовать XcodeGen, принципы чистой архитектуры, шаблоны Xcode и многое другое. Для пользовательского интерфейса мы будем использовать SwiftUI, а для навигации — UIKit.

Короче говоря, вот что вы узнаете к концу статьи:

  • Как разделить iOS-приложение на слои в соответствии с подходом «Чистая архитектура».
  • Как предотвратить циклические зависимости.
  • Как использовать XcodeGen для модульности приложения.
  • В чем заключается подход интерфейсных модулей и как реализовать навигацию в модульных приложениях.
  • Как генерировать диаграммы зависимостей простым вызовом командной строки с помощью GraphViz.
  • Доступны другие инструменты модульности iOS.

Готовый демо-проект доступен на GitHub.

Демо-приложение

Давайте посмотрим на демо-приложение, которое мы собираемся модульизировать:

Как мы видим, у нас есть четыре экрана: «Вход», «Цитаты», «Детали цитаты» и «Настройки». Мы планируем сделать каждую из них отдельной функцией.

Поток выглядит следующим образом:

  • Экран «Войти» отображается в том случае, если пользователь еще не вошел в систему. В противном случае нам открывается экран «Котировки».
  • При нажатии на кнопку «Войти» пользователь проходит аутентификацию и отображается экран «Котировки».
  • Нажатие на конкретную цитату приводит нас к экрану «Детали цитаты», на котором мы также можем удалить цитату, нажав кнопку «Удалить цитату».
  • Как только происходит удаление котировки, мы автоматически возвращаемся к экрану «Котировки», на котором удаленная котировка больше не отображается. Эта функция включена, чтобы продемонстрировать, как два изолированных объекта могут взаимодействовать друг с другом.
  • Кроме того, поскольку у нас есть панель вкладок, мы можем перейти к экрану «Настройки», на котором мы можем выйти, нажав…