Какие плюсы и минусы Dependency Injection?
Продвинутые темы
Плюсы Dependency Injection: тестируемость, слабая связанность, гибкость. Минусы: усложнение, бойлерплейт, порог входа, возможная избыточность для простых случаев.
Плюсы
- Тестируемость — легко подставить мок вместо реальной зависимости:
new UserService(new MockApi()); // тест- Слабая связанность — зависимость от абстракции, а не конкретики (принцип DIP).
- Гибкость — заменить реализацию без изменения потребителя.
- Переиспользование — компонент не привязан к конкретным зависимостям.
- Явность — зависимости видны в сигнатуре.
Минусы
- Усложнение — больше кода/абстракций, косвенность.
- Бойлерплейт — регистрация провайдеров, конфигурация контейнера.
- Порог входа — DI-контейнеры (Angular, NestJS) требуют изучения.
- Избыточность — для простых случаев прямое создание проще.
- Труднее отследить — что откуда инжектится (в больших системах).
Когда применять
- Сложные приложения, тестируемость важна → да (Angular, NestJS).
- Простой скрипт, мало зависимостей → часто избыточно.
Коротко для собеседования
Плюсы DI: тестируемость (моки), слабая связанность (зависимость от абстракций — DIP), гибкость (замена реализации), явность. Минусы: усложнение, бойлерплейт (регистрация провайдеров), порог входа, избыточность для простых случаев. Оправдан в сложных приложениях (Angular/NestJS), избыточен для простых.