J'ai soumis une demande que j'ai écrite à d'autres architectes pour la révision du code. L'un d'entre eux m'a presque immédiatement répondu en me disant "N'utilisez pas" statique ". Vous ne pouvez pas écrire de tests automatisés avec des classes et des méthodes statiques." Statique "est à éviter."
J'ai vérifié et au moins 1/4 de mes cours sont marqués "statique". J'utilise static lorsque je ne vais pas créer une instance d'une classe car cette classe est une classe globale unique utilisée dans le code.
Il a ensuite mentionné quelque chose impliquant des techniques moqueuses, CIO / DI qui ne peuvent pas être utilisées avec du code statique. Il dit qu'il est regrettable que des bibliothèques tierces soient statiques en raison de leur caractère non testable.
Est-ce que cet autre architecte a raison?
mise à jour: voici un exemple:
APIManager - cette classe conserve les dictionnaires des API tierces que j'appelle avec la prochaine heure autorisée. Il impose les limites d'utilisation des API que de nombreuses tierces parties ont dans leurs conditions de service. Je l'utilise n'importe où j'appelle un service tiers en appelant Thread.Sleep (APIManager.GetWait ("ProviderXYZ")); avant de faire l'appel. Tout ici est thread-safe et cela fonctionne très bien avec le TPL en C #.
static
c'est bien;static
les champs doivent être traités avec beaucoup d' attention