Какие плюсы и минусы инъекции зависимостей

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

Ответ

Плюсы:

  • Уменьшает связанность кода, упрощая замену зависимостей (например, моки для тестов).
  • Упрощает тестирование (легко подменять реализации).
  • Улучшает читаемость и поддерживаемость (зависимости явно объявляются).
  • Облегчает повторное использование кода.

Минусы:

  • Увеличивает сложность настройки (особенно без фреймворков типа Dagger/Hilt).
  • Может усложнить отладку из-за скрытых зависимостей.
  • Требует больше boilerplate-кода (например, фабрики, модули).

Пример с Dagger/Hilt:

@Module
class NetworkModule {
    @Provides
    fun provideApiService(): ApiService = Retrofit.Builder()...build()
}

@AndroidEntryPoint
class MyViewModel @Inject constructor(private val api: ApiService) { ... }