Использовали ли библиотеки для Dependency Injection
Что проверяют
Понимаете ли вы, зачем нужно внедрение зависимостей, и умеете ли выбирать инструмент, а не просто повторяете за проектом.
Как отвечать
Сначала о смысле: внедрение зависимостей нужно, чтобы объект получал готовые зависимости снаружи, а не создавал их сам. Тогда его можно собрать иначе в тестах, подменить реализацию и увидеть в одном месте, что вообще нужно классу для работы.
Дальше про инструменты в Android:
- Hilt это рекомендованный вариант поверх Dagger. Кодогенерация на этапе сборки, проверка графа компилятором, готовые области видимости под приложение, активити, фрагмент и
ViewModel. Ошибка отсутствующей зависимости это ошибка сборки, а не падение в рантайме; - Dagger 2 без надстройки даёт больше контроля и больше ручной работы: компоненты, модули, области видимости. Оправдан в больших проектах со своей структурой модулей;
- Koin это описание модулей на Kotlin, граф собирается в рантайме. Осваивается за вечер, но об отсутствующей зависимости узнаёте при первом обращении, поэтому проверку графа держат отдельным тестом;
- ручное внедрение через конструкторы вполне рабочий вариант для небольшого приложения, и начинать с него нормально.
Расскажите, как применяли: где создаются зависимости, как разделены области видимости, как подменяются реализации в тестах, как решались многомодульные сборки.
Где спотыкаются
Называют библиотеку, но не могут объяснить, что такое область видимости и почему объект живёт дольше экрана.
Кладут в граф с областью приложения то, что должно жить в пределах экрана, и получают утечки.
Считают, что без библиотеки внедрения зависимостей не бывает: конструктор с параметрами это тоже внедрение.