Criei um método de validação particular para uma determinada validação que ocorre várias vezes na minha classe (não consigo armazenar os dados validados por vários motivos). Agora, o ReSharper sugere que a função pode se tornar estática. Estou um pouco relutante em fazê-lo devido a problemas conhecidos com métodos estáticos. Seria um método estático privado . Minha pergunta é: métodos estáticos privados podem causar problemas semelhantes de acoplamento e teste, como métodos estáticos públicos? É uma prática ruim? Eu acho que não, mas não tenho certeza se existe uma armadilha aqui.
c#
static-methods
Tamás Szelei
fonte
fonte
Respostas:
Eu pensava: "Preciso testar isso?"
Se seu método é privado de qualquer maneira, o que significa que você não deseja testar a lógica do próprio método, então, no que diz respeito à testabilidade e manutenção, sua classe é uma caixa preta de qualquer maneira, o funcionamento interno da sua classe é o seu negócio. e está sozinho. A refatoração também não será afetada, o que também é algo a considerar.
Então, na minha opinião: não, tornar um método "privado" "privado estático" não terá implicações a longo prazo.
fonte
Métodos estáticos privados são a coisa mais fácil possível, do meu ponto de vista.
DataIn -> Método -> DataOut
Não há dependências em objetos externos, nem efeitos colaterais. Por que você os considera ruins?
fonte
Testar classes que usam métodos estáticos públicos pode ser difícil, pois não é (particularmente) fácil stub / fake / mock os métodos estáticos. Os métodos de instância, por outro lado, podem ser ridicularizados facilmente, especialmente se forem virtuais ou satisfizerem uma interface.
No entanto, não vejo nenhum motivo para não usar métodos estáticos privados. De fato, há um pequeno benefício de desempenho, pois você não precisa de uma instância da classe para ocupar memória.
Por outro lado, qualquer coisa estática é um pouco de cheiro de código. Isso é realmente uma "classe auxiliar"? Será que o método poderia residir de maneira mais útil em uma das classes passadas como parâmetro? A resposta para essas perguntas geralmente é "está bem como estática", mas vale a pena lembrar.
fonte
static
palavra - chave parece infundado.