Какие плюсы и минусы Dagger

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

Ответ

Плюсы:

  • Внедрение зависимостей (DI) уменьшает связанность кода, упрощает тестирование.
  • Автоматическое управление жизненным циклом зависимостей (например, синглтоны).
  • Четкое разделение кода на модули, компоненты и зависимости.
  • Генерация кода на этапе компиляции (меньше ошибок в рантайме).

Минусы:

  • Сложность обучения (кривая входа высокая).
  • Избыточный бойлерплейт (много аннотаций, модулей, компонентов).
  • Медленная сборка при больших проектах (из-за кодогенерации).
  • Ошибки компиляции могут быть неочевидными.

Пример модуля:

@Module
class AppModule {
    @Provides
    fun provideApiService(): ApiService = RetrofitClient.apiService
}