Какие проблемы возникают при работе со Storyboards в команде
Что проверяют
Работали ли вы в проекте больше чем из трёх экранов и застали ли реальные конфликты в Interface Builder. Спрашивают не «сториборды это плохо?», а чем вы платили за наглядность и что с этим делали. Следом обычно идёт вопрос, как у вас организован UI сейчас и почему.
Как отвечать
- конфликты слияния:
.storyboardэто XML, который генерирует Xcode. Два человека подвинули по кнопке на разных экранах, и git показывает конфликт в одном файле, где переставились идентификаторы и атрибуты автолейаута. Разрешать вручную опасно: сломанный XML либо не собирается, либо падает в рантайме; - медленный редактор: файл на тридцать экранов открывается секундами, ошибки констрейнтов ищутся по мелким иконкам, а поиск по проекту вёрстку не находит вовсе;
- позднее падение: связь
@IBOutletи@IBActionпроверяется только при запуске. Переименовали свойство, забыли перецепить, получаетеthis class is not key value coding-compliant. Компилятор молчит; - зависимости экрана: у контроллера из сториборда нет собственного инициализатора, зависимости прокидываются после
instantiateViewControllerчерезvar, и внедрение зависимостей превращается в набор опциональных полей; - переиспользование: сегвей зашивает переход в разметку, поэтому открыть тот же экран из другого сценария просто так нельзя.
Содержательная часть ответа это решения. Дробление на много маленьких сторибордов по фичам плюс Storyboard Reference. Отдельные .xib на ячейку и на переиспользуемую вью, они конфликтуют реже. Договорённость «у одного сториборда один владелец в спринте». Генерация типизированных констант вместо строковых идентификаторов. Новые экраны на SwiftUI или на коде, где вёрстка это обычный текст на Swift и обычный дифф.
Где спотыкаются
Ограничиваются словами «конфликты в мердже» и не могут объяснить, почему они настолько неприятны именно здесь.
Предлагают «просто всё переписать на код», не оценив стоимость. Взрослый ответ звучит иначе: новое пишем без сториборда, старое трогаем при плановой переработке экрана.
Забывают про рантайм-ошибки от разорванных аутлетов. От них спасает не внимательность, а прогон экранов в тестах на CI и снапшот-тесты.