Skip to content

Latest commit

 

History

History
82 lines (45 loc) · 6.56 KB

iOS.md

File metadata and controls

82 lines (45 loc) · 6.56 KB

iOS

Команда

Разработкой приложения занимается более 25 iOS-разработчиков.

Продуктовые разработчики из разных команд пилят новые фичи и рефакторят существующие, а команда iOS Platform разрабатывает и поддерживает базовые фреймворки и делает разработку фичей удобнее и быстрее.

Вопросы CI/CD берут на себя наши мобильные девопсы.

Проект

Весь iOS живёт в едином проекте с модульной архитектурой. Мы релизим приложение раз в неделю. Поддерживаем 3 последних версии операционки и как можно быстрее адоптим последнюю версию Xcode.

Синхронизацию на проекте мы поддерживаем регулярными встречами. Все iOS разработчики раз в неделю собираются на TechDemo, чтобы обсудить текущие задачи и боли. Мы также проводим iOS митапы и разгоняем там последние новости индустрии, прогоняем доклады перед конференциями и болтаем за жизнь.

Стек

  • Swift + несколько процентов Obj-C в коде, который трогать не требуется.
  • Для многопоточности — Swift Concurrency – во многих модулях уже включены Complete-проверки и мигрируем оставшиеся.
  • Модульная архитектура приложения на Cocoapods с разделением модулей по типам и c автоматическими проверками правильности построения связей между модулями.
  • Архитектура вью-слоя – The Composable Architecture (TCA). Старые модули имеют реализацию MVVM с немутабельным стейтом и поддержкой как UIKit, так и SwiftUI.
  • Зависимости мы используем на основе Swift Dependencies от Pointfree. В других местах еще встречается предыдущий подход к DI – своеобразный service locator на структурах с удобной организацией моков для тестов и превью.
  • UI разрабатываем на SwiftUI, старые интерфейсы написаны на UIKit.
  • У нас есть своя дизайн-система с основными компонентами приложения.

Тесты

Мы пишем Unit и UI-автотесты.

В нашем проекте более 2300 Unit-тестов, это как тесты на бизнес-логику, так и снепшот тесты вью.

UI-тесты пишутся на основной продуктовый флоу, сейчас их более 150, и стремимся к полному покрытию ключевых сценариев.

UI пишут и поддерживают продуктовые разработчики, а команда платформы предоставляет для этого удобный тулинг.

Проверки кода

У нас множество проверок кода, как локально, так и на CI, которые обеспечивают единство написания кода и снижают уровень ошибок.

Мы проверяем стиль кода, ресурсы приложения, локализации, использование deprecated-кода и многое другое.

В проекте установлена zero-warnings policy, соответственно, ни один ворнинг не пройдет в мастер.

В пулл-реквестах обязателен тех-дизайн вносимых изменений. Ревьюеры назначаются автоматически в зависимости от нагрузки и отпусков.

Собственная система импакт-анализа запускает UI тесты только на изменения, которые могли повлиять на поведение теста.

Среднее время проверки пулл-реквеста на CI 12-15 минут, что обеспечивает достаточно быстрый фидбэк при разработке.

Мы в публичном пространстве

📹 Видео


🎙️ Подкасты

📄 Статьи