Выбор ответа Middle Внедрение зависимостей обновлено
Dagger/Hilt и Koin
Вопрос
В чём ключевое отличие Hilt (Dagger) от Koin?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Hilt строит граф при компиляции и ловит недостающие зависимости до запуска; Koin в рантайме. Dagger и Hilt строят граф аннотациями и кодогенерацией (kapt или KSP): ошибка в графе это ошибка сборки, а рантайм быстрый.
Варианты ответа
- Koin работает только с Java-классами, а для Kotlin и Multiplatform нужен именно Hilt
- Hilt не поддерживает ViewModel, поэтому их создают фабриками вручную, а Koin умеет это сразу
- Koin генерирует граф через KSP при компиляции, а Hilt разрешает зависимости рефлексией в рантайме
- Hilt строит граф при компиляции и ловит недостающие зависимости до запуска; Koin в рантаймеправильный ответ
Разбор
Dagger и Hilt строят граф аннотациями и кодогенерацией (kapt или KSP): ошибка в графе это ошибка сборки, а рантайм быстрый. Koin это DSL на Kotlin, граф собирается при запуске: проще порог входа и быстрее сборка, но ошибки всплывают в рантайме (их ловят тестом verify графа). Koin написан для Kotlin, включая Multiplatform, а Hilt прекрасно поддерживает ViewModel.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Внедрение зависимостей»
- Composition root
- DI через Environment в SwiftUI
- Компоненты и скоупы Hilt
- Способы внедрения зависимостей
- Инструменты DI на мобильных платформах
- Время жизни зависимостей
- Данные прошлого пользователя после смены аккаунта
- Внедрение зависимостей в мобильном приложении