Я создал частный метод проверки для определенной проверки, которая происходит несколько раз в моем классе (я не могу сохранить проверенные данные по разным причинам). Теперь ReSharper предлагает сделать функцию статичной. Я немного не хочу этого делать из-за известных проблем со статическими методами. Это был бы приватный статический метод. Мой вопрос заключается в том, могут ли частные статические методы вызывать такие же проблемы связывания и тестирования, как публичные статические методы? Это плохая практика? Думаю, нет, но я не уверен, что здесь есть подводный камень.
c#
static-methods
Тамас Селеи
источник
источник
Ответы:
Я бы подумал: «Мне нужно проверить это?»
Если ваш метод в любом случае является закрытым, то есть вы не хотите проводить модульное тестирование логики в самом методе, то с точки зрения тестируемости и ремонтопригодности ваш класс в любом случае является черным ящиком, внутренняя работа вашего класса - это его бизнес и только. Рефакторинг также не будет затронут, что также необходимо учитывать.
Итак, на мой взгляд: нет, создание «частного» метода «частной статики» не будет иметь никаких долгосрочных последствий.
источник
С моей точки зрения, частные статические методы - самая легкая вещь из всех возможных.
DataIn -> Метод -> DataOut
Нет никаких зависимостей от внешних объектов, нет побочных эффектов. Почему вы считаете их плохими?
источник
Тестирование классов, использующих общедоступные статические методы, может быть трудным, поскольку нелегко (особенно) просто заглушить / подделать / смоделировать статические методы. Методы экземпляра, с другой стороны, могут быть легко смоделированы, особенно если они виртуальные или удовлетворяют интерфейсу.
Тем не менее, я не вижу причин, чтобы не использовать частные статические методы. Действительно, есть небольшое преимущество в производительности, так как вам не нужен экземпляр класса для заполнения памяти.
С другой стороны, все, что статично, является запахом кода. Это действительно "вспомогательный класс"? Может ли быть так, что метод мог бы с большей пользой находиться в одном из классов, передаваемых в качестве параметра? Ответ на эти вопросы часто «хороший, как статичный», но его стоит запомнить.
источник
static
ключевым словом кажется необоснованным.