Ответ вслух Middle DI: Hilt и Koin спрашивают часто обновлено

Hilt или Koin

Вопрос

Сравни Hilt и Koin. Что бы ты выбрал для нового проекта и почему?

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

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

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

Коротко

Hilt это надстройка над Dagger: граф описывается аннотациями, код фабрик генерируется при компиляции, и ошибка вроде отсутствующей зависимости видна сразу при сборке. Рантайм быстрый, есть готовые интеграции с ViewModel, WorkManager и Navigation, это рекомендация Google.

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

  • Hilt: кодогенерация, проверка графа при компиляции, стандарт Google

  • Koin: DSL, разрешение в рантайме, без кодогенерации

  • Ошибки: Hilt при сборке, Koin при запуске или в тестах verify

  • Сборка: Hilt медленнее (KSP/kapt), Koin быстрее

  • Koin работает в Kotlin Multiplatform

  • Выбор по размеру проекта, команде и KMP

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

  • Как ускорить сборку с Hilt?
  • Как проверить граф Koin в CI?

Разбор

Hilt это надстройка над Dagger: граф описывается аннотациями, код фабрик генерируется при компиляции, и ошибка вроде отсутствующей зависимости видна сразу при сборке. Рантайм быстрый, есть готовые интеграции с ViewModel, WorkManager и Navigation, это рекомендация Google. Цена: время сборки, особенно с kapt, поэтому лучше KSP, и более высокий порог входа. Koin это DSL на Kotlin без кодогенерации: модули с single, factory, viewModel, разрешение при обращении в рантайме. Он проще, сборка быстрее, и он работает в Kotlin Multiplatform. Минус в том, что ошибка графа проявится только при запуске, поэтому в CI нужен тест verify() или Koin Annotations. Для большого Android-проекта с несколькими командами я выберу Hilt из-за проверки при компиляции. Для небольшого проекта или KMP с общей бизнес-логикой разумен Koin.

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

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