Когда не применять инверсию зависимостей

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

Ответ

Инверсия зависимостей (Dependency Inversion Principle, DIP) не всегда уместна. Вот случаи, когда её лучше избегать:

  1. Простые проекты или утилиты – если код небольшой и не требует гибкости, DI усложнит архитектуру без пользы.
  2. Высокопроизводительные сценарии – инъекция зависимостей через интерфейсы может добавить накладные расходы.
  3. Специфичные зависимости – например, доступ к localStorage или нативным API браузера. Абстрагирование здесь избыточно.
  4. Третьесторонние библиотеки – если библиотека уже предоставляет готовый API, оборачивание в интерфейс не даст преимуществ.

Пример избыточного DI:

// Излишне
interface ILogger {
  log(message: string): void;
}

class ConsoleLogger implements ILogger {
  log(message: string) {
    console.log(message);
  }
}

class App {
  constructor(private logger: ILogger) {}
}

Вместо этого можно использовать console.log напрямую, если логирование не требует гибкости.