Home » Переход на SwiftUI на Airbnb

Переход на SwiftUI на Airbnb

В 2022 году команда iOS в Airbnb решила, что SwiftUI достаточно зрел, чтобы его можно было использовать в качестве официального приложения.. «Это потребовало тщательного перехода», — объясняет штатный инженер Airbnb Брин Бодейл.

Ключевыми преимуществами, которые инженеры Airbnb увидели в SwiftUI, были его гибкость и возможность компоновки, его декларативный характер, краткость и идиоматичность, которые, как они надеялись, могут улучшить опыт разработчиков, не теряя при этом в удобстве пользователей.

Чтобы сделать переход максимально плавным, они разработали трехэтапный план. На первом этапе они сосредоточатся на создании коллекции повторно используемых компонентов на основе уже существующих. система проектирования. На втором этапе они построят целые экраны, сочетая базовые компоненты. На третьем и последнем этапе экраны будут объединены в полноценные функции.

Прежде чем приступить к первым двум этапам, инженеры Airbnb провели небольшой пилотный проект среди инженеров, которые вызвались опробовать SwiftUI, чтобы собрать отзывы и улучшить свою инфраструктуру на раннем этапе.

Как уже упоминалось, первым шагом была перестройка существующей системы дизайна с использованием SwiftUI на основе ряда протоколов стилей, которые можно было создавать и передавать в представления с помощью модификаторов представления. Это обеспечило основу, позволяющую разработчикам легко настраивать компоненты пользовательского интерфейса с помощью нескольких строк кода.

Вторым ключевым шагом было создание инфраструктуры, обеспечивающей двунаправленное соединение между представлениями Epoxy на основе UIKit и представлениями SwiftUI. Подробности о том, как был построен этот мост, можно прочитать в оригинальной статье. Здесь достаточно сказать, что этот мост был основан на UIHostingViewController встроить иерархию SwiftUI в контроллер представления и UIViewRepresentable для интеграции представления UIKit в иерархию SwiftUI.

Еще одним фундаментальным решением, которое приняли инженеры Airbnb, была адаптация однонаправленного потока данных Epoxy к SwiftUI, приняв ObservableOject в качестве хранилища своих классов состояний для запуска повторного рендеринга SwiftUI при каждом изменении состояния.

Мы обнаружили, что инженеры предпочитают продолжать создавать экраны в SwiftUI, используя этот подход, поскольку он позволяет хранить логику изменения бизнеса и состояния отдельно от логики представления.

Возможность тестирования также занимала одно из первых мест в списке приоритетов Airbnb. Их новая реализация SwiftUI должна была хорошо сочетаться с их тестирование моментальных снимков подход. Чтобы сделать это возможным, они присвоили имя каждому определенному ими варианту представления для использования со своей службой тестирования моментальных снимков и согласовали все варианты представления с Xcode. Протокол предварительного просмотра чтобы включить использование предварительного просмотра Xcode. Кроме того, они интегрировали ПросмотрИнспектор поддерживать стиль поведения тесты. ViewInspector позволяет перемещаться по иерархии представлений во время выполнения и обеспечивает прямой доступ к базовому View структуры, что делает их внутреннее состояние доступным для проверки и позволяет программно моделировать взаимодействие с пользователем.

Read more:  Почему татуировка Блю на Большом Брате размыта? Что это такое? Настоящее фото татуировки – StyleCaster

Благодаря всему этому, объясняет Бодейл, инженеры Airbnb смогли сократить примерно на шестую количество строк кода по сравнению с реализацией UIKit, не испытав при этом каких-либо значительных потерь производительности, связанных с реактивным характером SwiftUI, за исключением небольших накладных расходов при создание экземпляра UIHostingController.

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

2023-10-02 09:00:52


1696238233
#Переход #на #SwiftUI #на #Airbnb

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.