Ответ
Хранение всех зависимостей в одном компоненте Dagger приводит к нескольким проблемам:
-
Производительность - при каждом изменении графа зависимостей пересобирается весь компонент, что замедляет сборку.
-
Читаемость - большой монолитный компонент сложно поддерживать и понимать.
-
Избыточность - зависимости могут создаваться даже когда они не нужны.
Лучше разбивать на логические подкомпоненты:
@Singleton
@Component(modules = [AppModule::class])
interface AppComponent {
fun sessionComponent(): SessionComponent.Factory
}
@SessionScope
@Subcomponent(modules = [SessionModule::class])
interface SessionComponent {
@Subcomponent.Factory
interface Factory {
fun create(): SessionComponent
}
}
Такой подход улучшает модульность, ускоряет инкрементальные сборки и делает код чище.