Разработкой приложения занимается более 25 iOS-разработчиков.
Продуктовые разработчики из разных команд пилят новые фичи и рефакторят существующие, а команда iOS Platform разрабатывает и поддерживает базовые фреймворки и делает разработку фичей удобнее и быстрее.
Вопросы CI/CD берут на себя наши мобильные девопсы.
Весь iOS живёт в едином проекте с модульной архитектурой. Мы релизим приложение раз в неделю. Поддерживаем 3 последних версии операционки и как можно быстрее адоптим последнюю версию Xcode.
Синхронизацию на проекте мы поддерживаем регулярными синками. Все iOS-разработчики раз в неделю собираются на TechDemo, чтобы обсудить текущие задачи и боли. Мы также проводим iOS-митапы и разгоняем там последние новости индустрии, прогоняем доклады перед конференциями и болтаем за жизнь.
- Swift + несколько процентов Obj-C в коде, который трогать не требуется
- Для многопоточности — Swift Concurrency – во многих модулях уже включены Complete-проверки и мигрируем оставшиеся
- Модульная архитектура приложения на Cocoapods с разделением модулей по типам и автоматическами проверками правильности построения связей между модулями
- Архитектура вью-слоя – своя реализация MVVM с немутабельным стейтом и поддержкой как UIKit, так и SwiftUI
- DI – своеобразный service locator на структурах с удобной организацией моков для тестов и превью
- UI разрабатываем на SwiftUI, старые интерфейсы написаны на UIKit
- У нас есть своя дизайн-система с описанием основных компонентов приложения
Мы пишем Unit и UI-автотесты.
В нашем проекте более 2300 Unit-тестов, это как тесты на бизнес-логику, так и снепшот тесты вью.
UI-тесты пишутся на основной продуктовый флоу, сейчас их более 150 и стремимся к полному покрытию ключевых сценарией.
Их пишут и поддерживают продуктовые разработчики, а команда платформы предоставляет для этого удобный тулинг.
У нас множество проверок кода, как локально, так и на CI, которые обеспечивают единство написания кода и снижают уровень ошибок.
Мы проверяем стиль кода, ресурсы приложения, локализации, использования deprecated-кода и многое другое.
В проекте установлена zero-warnings policy, соответственно ни один ворнинг не пройдет в мастер.
В пулл-реквестах обязателен тех-дизайн вносимых изменений. Ревьюеры назначаются автоматически в зависимости от нагрузки и отпусков.
Собственная система импакт-анализа запускает UI тесты только на изменения, которые могли повлиять на поведение теста.
Среднее время проверки пулл-реквеста на CI 12-15 минут, что обеспечивает достаточно быстрый фидбек при разработке.