Дизайн систему переписали на Compose
Что проверяют
За этой фразой почти всегда идёт просьба рассказать, как именно переписывали. Интервьюеру важно, проектировали ли вы дизайн-систему сами или только пользовались готовыми компонентами. Уточняют, как жили XML-экраны во время миграции и как проверяли, что визуально ничего не поехало.
Как отвечать
Рассказывайте о своём проекте по шагам и со своими цифрами: сколько компонентов, сколько экранов, сколько длилась миграция. Технический каркас примерно такой:
- токены: цвета, типографика, отступы, скругления вынесены в классы и раздаются через
CompositionLocal. Для редко меняющихся значений темы подходитstaticCompositionLocalOf, а своя тема оборачивается в функцию вродеAppTheme { }поверх или вместоMaterialTheme; - компоненты: кнопки и поля строятся на Material 3 или прямо на
foundation, с API на слотах (content: @Composable () -> Unit) иModifierпервым необязательным параметром; - совместимость: новые компоненты попадают в старые XML-экраны через
ComposeView, а старые View в Compose черезAndroidView. Чтобы XML-тема и Compose-тема не разошлись, токены лучше генерировать из одного источника; - проверка:
@Previewдля каждого состояния и скриншотные тесты (Paparazzi, Roborazzi), которые ловят сдвиг на пиксель; - производительность: классы токенов помечают
@Immutable, коллекции в параметрах делают стабильными, лишние рекомпозиции ищут в Layout Inspector.
Если в миграции вы участвовали частично, так и скажите и уточните свой кусок. Если опыта нет вовсе, честно назовите это и расскажите, как организовали бы переход: сначала токены и тема, потом базовые компоненты, потом экраны по одному.
Где спотыкаются
Говорят, что Compose сам по себе быстрее View. Без Baseline Profiles первый показ экрана бывает медленнее, а нестабильные параметры вызывают лишние рекомпозиции.
Копируют Material-компоненты целиком, вместо того чтобы спроектировать узкий API под свои сценарии. Потом каждый экран передаёт в кнопку десять параметров.
Описывают переписывание одним рывком. Сильнее звучит постепенная миграция с метриками: сколько экранов уже на Compose и что это дало по времени разработки.