Введена зависимость или оператор разрешения области?

Я не нашел подобного вопроса, поэтому прошу прощения, если он уже существует.

В моей системе я хочу, чтобы ряд библиотек функций облегчал выполнение ряда задач по всей системе. Это может быть проверка по электронной почте. Нет смысла каждый раз писать полное регулярное выражение, если я могу заставить функцию делать это, поэтому мне нужно только что-то изменить и исправить ошибки в одном месте.

Скажем, я пишу класс с именем Files_Tools.

Я могу заставить его работать как зависимостью, вставляя экземпляр этого класса в объекты, которым нужны функции из этого класса. Но я также могу написать класс Files_Tools со статическими функциями и обращаться к ним с помощью оператора разрешения области видимости. Но, как я уже понял, одна из главных вещей в DI (внедрение зависимостей) состоит в том, чтобы избежать такого рода "глобального использования". Так что моя логика подсказывает мне придерживаться подхода DI. Тем не менее, это все еще не чувствует себя "правильным", что я делаю это таким образом.

Поэтому мой вопрос: что считается наиболее правильным способом создания набора инструментов для системы? Прежде всего, это сделать его классом, а не просто функцией? И потом, если это действительно класс, это путь, я должен стремиться к SRO или DI?

Я понимаю, что, вероятно, нет однозначного ответа на этот вопрос, но я хочу знать, полностью ли я не в курсе или направляюсь туда, куда бы поступили многие другие программисты.

Заранее спасибо:)

1 ответ

Решение

DI облегчает юнит-тестирование ваших классов и методов без зависимости от внедренного класса... вы можете смоделировать внедренный объект и манипулировать его возвратами в соответствии с вашими тестами. Разрешение области действия оставляет вас с этой зависимостью, поэтому тесты не полностью изолированы.

Многие из моих более ранних проектов используют статические классы для такой функциональности, и попытка написать для них модульные тесты 6 лет - теперь настоящая рутина, потому что я не использовал DI.

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