Enviei uma inscrição que escrevi para alguns outros arquitetos para revisão de código. Um deles quase imediatamente me escreveu de volta e disse: "Não use" estático ". Você não pode escrever testes automatizados com classes e métodos estáticos." Estático "deve ser evitado."
Eu verifiquei e totalmente 1/4 das minhas aulas estão marcadas como "estáticas". Uso estático quando não vou criar uma instância de uma classe porque a classe é uma única classe global usada em todo o código.
Ele passou a mencionar algo que envolvia zombaria, técnicas IOC / DI que não podem ser usadas com código estático. Ele diz que é lamentável quando as bibliotecas de terceiros são estáticas devido à sua falta de testabilidade.
Esse outro arquiteto está correto?
update: aqui está um exemplo:
APIManager - essa classe mantém dicionários de APIs de terceiros que estou chamando junto com o próximo tempo permitido. Ele impõe limites de uso da API que muitos terceiros têm em seus termos de serviço. Eu o uso em qualquer lugar em que estou chamando um serviço de terceiros, chamando Thread.Sleep (APIManager.GetWait ("ProviderXYZ")); antes de fazer a ligação. Tudo aqui é seguro para threads e funciona muito bem com o TPL em C #.
static
está bem;static
campos precisam ser tratados com muito cuidado