J'ai créé une méthode de validation privée pour une certaine validation qui se produit plusieurs fois dans ma classe (je ne peux pas stocker les données validées pour diverses raisons). Maintenant, ReSharper suggère que la fonction pourrait être rendue statique. Je suis un peu réticent à le faire en raison de problèmes connus avec les méthodes statiques. Ce serait une méthode statique privée . Ma question est la suivante: les méthodes statiques privées peuvent-elles provoquer des problèmes de couplage et de test similaires, comme les méthodes statiques publiques? Est-ce une mauvaise pratique? Je suppose que non, mais je ne sais pas s'il y a un écueil ici.
c#
static-methods
Tamás Szelei
la source
la source
Réponses:
Je pense: "Dois-je tester cela?"
Si votre méthode est de toute façon privée, ce qui signifie que vous ne voulez pas tester la logique de la méthode elle-même, alors en ce qui concerne la testabilité et la maintenabilité, votre classe est une boîte noire de toute façon, le fonctionnement interne de votre classe est son affaire. et son seul. La refactorisation ne sera pas affectée non plus, ce qui est également quelque chose à considérer.
Donc, à mon avis: Non, rendre une méthode "privée" "statique privée" n'aura aucune ramification à long terme.
la source
Les méthodes statiques privées sont la chose la plus simple possible, de mon point de vue.
DataIn -> Méthode -> DataOut
Il n'y a pas de dépendances sur les objets externes, pas d'effets secondaires. Pourquoi les considérez-vous comme mauvais?
la source
Tester des classes qui utilisent des méthodes statiques publiques peut être difficile, car il n'est pas (particulièrement) facile de bloquer / simuler / simuler les méthodes statiques. Les méthodes d'instance, en revanche, peuvent être facilement moquées, surtout si elles sont virtuelles ou satisfont une interface.
Cependant, je ne vois aucune raison de ne pas utiliser de méthodes statiques privées. En effet, les performances sont légèrement améliorées, car vous n'avez pas besoin d'une instance de la classe pour occuper la mémoire.
D'un autre côté, tout ce qui est statique est un peu une odeur de code. S'agit-il en fait d'une "classe d'aide"? Se pourrait-il que la méthode puisse résider plus utilement sur l'une des classes passées en paramètre? La réponse à ces questions est souvent "c'est bien comme statique" mais ça vaut la peine de se souvenir.
la source
static
mot - clé ne semble pas fondée.