Какие знаешь проблемы Subcomponents в Dagger

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

Ответ

Subcomponents в Dagger имеют несколько ключевых проблем:

  1. Циклические зависимости – если родительский и дочерний компоненты зависят друг от друга, это приводит к ошибкам компиляции. Например:
@Component
interface AppComponent {
    fun childComponent(): ChildComponent
}

@Subcomponent
interface ChildComponent {
    fun inject(activity: MainActivity)
    fun appComponent(): AppComponent // Ошибка!
}
  1. Утечки памяти – Subcomponent привязан к жизненному циклу родителя. Если не очищать его вовремя, могут оставаться ссылки на устаревшие объекты.

  2. Сложность тестирования – из-за жесткой привязки к родительскому компоненту сложно изолировать тесты.

  3. Проблемы с мультимодульностью – Subcomponent должен быть объявлен в том же модуле, что и родительский компонент, что ограничивает гибкость архитектуры.

  4. Неявные зависимости – дочерний компонент неявно получает все зависимости родителя, что усложняет отслеживание зависимостей.