Envié una solicitud que escribí a otros arquitectos para la revisión del código. Uno de ellos casi inmediatamente me respondió y dijo "No use" estático ". No puede escribir pruebas automatizadas con clases y métodos estáticos." Debe evitarse "estático".
Revisé y 1/4 de mis clases están marcadas como "estáticas". Utilizo static cuando no voy a crear una instancia de una clase porque la clase es una clase global única utilizada en todo el código.
Luego mencionó algo relacionado con la burla, las técnicas IOC / DI que no se pueden usar con código estático. Él dice que es desafortunado cuando las bibliotecas de terceros son estáticas debido a su imposibilidad de prueba.
¿Es este otro arquitecto correcto?
actualización: aquí hay un ejemplo:
APIManager: esta clase mantiene diccionarios de API de terceros a los que llamo junto con el próximo tiempo permitido. Aplica los límites de uso de API que muchos terceros tienen en sus términos de servicio. Lo uso en cualquier lugar donde llamo a un servicio de terceros llamando a Thread.Sleep (APIManager.GetWait ("ProviderXYZ")); antes de hacer la llamada. Todo aquí es seguro para subprocesos y funciona muy bien con el TPL en C #.
static
está bien;static
los campos deben ser tratados con mucho cuidado