Какие знаешь проблемы, если не проинжектить зависимость в Dagger

«Какие знаешь проблемы, если не проинжектить зависимость в Dagger» — вопрос из категории DI, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Основные проблемы без инжекта зависимостей в Dagger:

  1. Тестирование усложняется - без DI сложно подменять зависимости на моки/стабы
  2. Жесткая связанность - классы знают о конкретных реализациях зависимостей
  3. Повторное использование кода - зависимости не могут быть легко переиспользованы
  4. Жизненный цикл - ручное управление временем жизни объектов

Пример плохого кода:

class MyViewModel {
    private val repo = NetworkRepository() // жесткая привязка
}

Пример с Dagger:

class MyViewModel @Inject constructor(
    private val repo: Repository // абстракция + инжект
)

Dagger решает эти проблемы через:

  • автоматическое создание графа зависимостей
  • управление скоупами
  • легкую подмену реализаций