2010-06-06 5 views
1

Мне очень нравится использовать статические методы (особенно для классов помощников). Но поскольку статические методы не подлежат разрешению, в конечном итоге они являются плохой практикой, не так ли? Поэтому я должен выбирать между удобством использования статических методов и возможностью тестирования. Есть ли компромисс?To static or not to static

ответ

9

Это зависит от того, что делают статические методы.

Это что-то, что действительно должно быть оглушительным? Как доступ к данным, длительные операции и т. Д. Или вы имеете в виду вспомогательные методы, такие как .ToSlug()?

Если это первый случай, я бы сделал их экземплярами методов, чтобы повысить тестируемость/скорость тестов.

Если это последний, я оставил бы их статическими и просто подтвердил бы их правильность.

+1

Согласен. этот вопрос задают много раз, кстати. , например, вы также можете прочитать: http://stackoverflow.com/questions/731763/should-c-methods-that-can-be-static-be-static http://stackoverflow.com/questions/1184701/статический-против-нестатический-метод – SirLenz0rlot

2

Если вы можете гарантировать, что статический метод всегда возвращает один и тот же результат для заданного ввода, и единственная причина, по которой они существуют, - это вспомогательные методы (преобразование или преобразование ввода -> вывод без побочных эффектов). Я не вижу проблемы. Для дополнительных ударов вы можете использовать их методы расширения (начиная с C# 3.0).