На какие критерии опираться при выборе DI

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

Ответ

При выборе DI-библиотеки учитывай:

  1. Производительность – время инициализации, влияние на сборку (Koin легче, Dagger быстрее в runtime).
  2. Кривая обучения – Dagger сложнее, Koin/Hilt проще.
  3. Поддержка мультимодульности – Dagger с @Component/@Subcomponent, Koin с модулями.
  4. Annotation processing (kapt) – Dagger требует, что замедляет сборку. Hilt (надстройка над Dagger) упрощает настройку.
  5. Гибкость – ручное управление скоупами (Dagger) vs автоматическое (Koin).

Пример для Hilt:

@HiltAndroidApp  
class App : Application()  

@Module  
@InstallIn(SingletonComponent::class)  
object AppModule {  
    @Provides  
    fun provideRepo(): Repo = RepoImpl()  
}  

@AndroidEntryPoint  
class MainActivity : AppCompatActivity()  

Для Koin:

val appModule = module {  
    single<Repo> { RepoImpl() }  
}  

class App : Application() {  
    override fun onCreate() {  
        startKoin { modules(appModule) }  
    }  
}  

Выбор зависит от проекта: для сложных – Dagger/Hilt, для быстрого старта – Koin.