Выбор ответа Junior DI: Hilt и Koin спрашивают часто обновлено

Зачем нужен DI

Вопрос

Какое главное преимущество даёт внедрение зависимостей через конструктор?

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

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

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

Коротко

Правильный ответ: Зависимости видны в сигнатуре и легко подменяются фейками в тестах. Класс не создаёт зависимости сам, а получает их, поэтому их можно подменить: в тесте ViewModel получает фейковый репозиторий.

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

  1. Код выполняется быстрее, потому что объекты создаются заранее
  2. Зависимости видны в сигнатуре и легко подменяются фейками в тестахправильный ответ
  3. Не нужно писать интерфейсы: DI подменяет любые классы через рефлексию прямо в рантайме
  4. Приложение занимает меньше памяти: объекты переиспользуются

Разбор

Класс не создаёт зависимости сам, а получает их, поэтому их можно подменить: в тесте ViewModel получает фейковый репозиторий. Кроме того, зависимости явные, а время жизни объектов управляется в одном месте. Скорость и память DI сам по себе не улучшает, а интерфейсы как раз часто вводят ради подмены.

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

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