OCP и DIP ломают YAGNI?

Насколько я понимаю YAGNI говорит, что нам нужно извлечь интерфейс, только если нам нужно. Поэтому, если нам не нужен полиморфизм и у нас есть только одна реализация, нам не нужно использовать интерфейс. Но DIP говорит:

A. Модули высокого уровня не должны зависеть от модулей низкого уровня. Оба должны зависеть от абстракций.

Б. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

Похоже, некоторое расхождение между YAGNI и вариант Б. из DIP, Также, если мы хотим подать заявку OCP нам нужно инвертировать управление зависимостями и извлечь абстракцию, чтобы иметь возможность расширять тип без изменений этого типа.

Также некоторые технологии требуют извлечения абстракции, чтобы иметь возможность модульного тестирования типов клиентов. Но, например, в Java это нам не нужно. Итак, я хочу знать , нужно ли мне извлекать абстракцию, если у меня сейчас только одна реализация?

0 ответов

Другие вопросы по тегам