Выбор ответа Junior DI: Hilt и Koin спрашивают часто обновлено
Зачем нужен DI
Вопрос
Какое главное преимущество даёт внедрение зависимостей через конструктор?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Зависимости видны в сигнатуре и легко подменяются фейками в тестах. Класс не создаёт зависимости сам, а получает их, поэтому их можно подменить: в тесте ViewModel получает фейковый репозиторий.
Варианты ответа
- Код выполняется быстрее, потому что объекты создаются заранее
- Зависимости видны в сигнатуре и легко подменяются фейками в тестахправильный ответ
- Не нужно писать интерфейсы: DI подменяет любые классы через рефлексию прямо в рантайме
- Приложение занимает меньше памяти: объекты переиспользуются
Разбор
Класс не создаёт зависимости сам, а получает их, поэтому их можно подменить: в тесте ViewModel получает фейковый репозиторий. Кроме того, зависимости явные, а время жизни объектов управляется в одном месте. Скорость и память DI сам по себе не улучшает, а интерфейсы как раз часто вводят ради подмены.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.