Ответ вслух Senior Нативные модули обновлено

Перевод нативных модулей на новую архитектуру

Вопрос

В проекте десять своих нативных модулей, написанных под старый мост. Как вы будете переводить их на новую архитектуру?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Начинаю с инвентаризации: какие модули реально используются, какие можно заменить библиотеками Expo или сообщества. Потом включаю новую архитектуру в ветке и смотрю, что работает через interop layer, это позволяет не переписывать всё сразу.

Что должно прозвучать в ответе

  • Инвентаризация: что используется, что можно заменить готовыми библиотеками

  • Проверка работы через interop layer как временное решение

  • Спецификации на TypeScript и Codegen для каждого модуля

  • Синхронные методы только для мгновенных операций

  • Постепенный перевод с тестами и релизами по одному модулю

  • Обновление сторонних зависимостей на версии с поддержкой новой архитектуры

Что могут спросить следом

  • Что делать с библиотекой, которая не поддерживает новую архитектуру?
  • Как убедиться, что ничего не сломалось?

Разбор

Образцовый ответ: «Начинаю с инвентаризации: какие модули реально используются, какие можно заменить библиотеками Expo или сообщества. Потом включаю новую архитектуру в ветке и смотрю, что работает через interop layer, это позволяет не переписывать всё сразу. Дальше перевожу модули по одному: пишу спецификацию на TypeScript, генерирую код Codegen, переношу реализацию на сгенерированный интерфейс. Заодно пересматриваю API: долгие методы возвращают Promise, большие данные идут путями к файлам. Для каждого модуля есть JS-тесты с моками и ручная проверка на обеих платформах, выпускаю постепенно. Для сторонних библиотек проверяю статус в React Native Directory и обновляю или ищу замену»

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.