Это действительно зависит от вашего YouLikeThemThisWay(string path)
метода. Мои правила использования статического метода или следующим образом:
- Требуется ли для него не примитивная зависимость? Если это так, не используйте статические.
- Это влияет на состояние приложения? Если это так, не используйте статические.
- Расширяет ли функциональность класса или типа, к которому у вас нет доступа к внутренним (классы или примитивы IE BCL)? Если это так, используйте статическое расширение!
- Будет ли это влиять на модульные тесты - как в случае их затруднения - если я не могу издеваться над рутиной? Если нет, сделайте его статическим!
- Будет ли он использоваться более чем одним типом или классом? Если это так, что он станет лучшим кандидатом на статичность!
- Выполняет ли подпрограмма какое-то IO, например, вызов базы данных или файловой системы? Если это так, я бы не стал статичным.
В основном, небольшие вспомогательные функции, которые легко тестируются и не влияют на состояние, или обычно нормально, чтобы сделать статичным. Если есть задействованное состояние, подпрограмма требует зависимости, которую вы обычно вводите, или подпрограмма вызывает вызовы IO или IPC, а затем не статична.
Одно из предостережений к проблеме зависимости технически вы можете использовать метод инъекции для обработки зависимостей, но мне нравится держать его простым. Вероятно, ваш метод может быть статичным.
Повторное использование также является важным фактором в статике. Если подпрограмма будет использоваться только в одном классе, может быть бессмысленной статичность. Большинство моих статических методов живут в вспомогательных классах, к которым легко получить доступ в любом месте.
РЕДАКТИРОВАТЬ: Обратите внимание, что обычно мне требуется большинство или все эти пять правил в пользу статики, чтобы я мог даже подумать о создании чего-то статического.
Я не думаю, что полностью получаю очко 2. Метод в основном не вызовет никакого внешнего ресурса. он просто работает над предоставленным вводом. –
Сначала я подумал о том, чтобы поместить его в «контекст», и вопрос был в том, что мне действительно нужно издеваться над этим или просто называть его (т. Е. Вывести его из «контекста», следовательно, мой вопрос «статический» или «частный») –
Точка № 2 означает, что метод, который вы думаете сделать статическим, влияет на глобальное состояние приложения, IE делает какой-то метод что-то, что нельзя «отменить», так что вы не можете выполнять функцию несколько раз подряд, те же результаты. Статические функции всегда должны быть [idempotent] (https://en.wikipedia.org/wiki/Idempotence) – Carson