Выбор ответа Middle Внедрение зависимостей обновлено

Dagger/Hilt и Koin

Вопрос

В чём ключевое отличие Hilt (Dagger) от Koin?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: Hilt строит граф при компиляции и ловит недостающие зависимости до запуска; Koin в рантайме. Dagger и Hilt строят граф аннотациями и кодогенерацией (kapt или KSP): ошибка в графе это ошибка сборки, а рантайм быстрый.

Варианты ответа

  1. Koin работает только с Java-классами, а для Kotlin и Multiplatform нужен именно Hilt
  2. Hilt не поддерживает ViewModel, поэтому их создают фабриками вручную, а Koin умеет это сразу
  3. Koin генерирует граф через KSP при компиляции, а Hilt разрешает зависимости рефлексией в рантайме
  4. Hilt строит граф при компиляции и ловит недостающие зависимости до запуска; Koin в рантаймеправильный ответ

Разбор

Dagger и Hilt строят граф аннотациями и кодогенерацией (kapt или KSP): ошибка в графе это ошибка сборки, а рантайм быстрый. Koin это DSL на Kotlin, граф собирается при запуске: проще порог входа и быстрее сборка, но ошибки всплывают в рантайме (их ловят тестом verify графа). Koin написан для Kotlin, включая Multiplatform, а Hilt прекрасно поддерживает ViewModel.

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

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