Экран списка в приложении Etsy для Android, который является ключевым для демонстрации продуктов, стал сложным и трудным для поддержки из-за быстрых изменений в коде. Чтобы решить эту проблему, команда реализовала "Макраме", новую архитектуру, основанную на неизменяемых данных и реактивном пользовательском интерфейсе. Ядром архитектуры является неизменяемый объект State, представляющий модель данных, передаваемый в пользовательский интерфейс через StateFlow. Обновления данных обрабатываются событиями, передаваемыми обработчикам для обработки и обновления состояния или побочных эффектов. Adapter списка и RecyclerView обрабатывают асинхронные изменения пользовательского интерфейса. Покрытие юнит-тестами значительно увеличилось, подтверждая использование простых обработчиков для бизнес-логики. Несмотря на некоторую избыточность и сложность для простых экранов, архитектура улучшает поддерживаемость и производительность кода. Время до первого контента уменьшилось на 18%, что привело к увеличению пользовательского взаимодействия. Команда Android распространила использование Macramé на другие экраны приложения, такие как Корзина и Магазин, написанные на Jetpack Compose.
etsy.com
Macramé: Untangling the Knot on the Etsy Android Listing Screen
Create attached notes ...
