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