En C #, quelle est la meilleure pratique pour encapsuler les variables que je dois utiliser dans plusieurs méthodes? Est-il OK de simplement les déclarer en haut de ma classe au-dessus des deux méthodes?
De plus, si j'utilise les paramètres d'application de mon fichier de configuration, dois-je utiliser un getter? comme ça...
private string mySetting{ get { return WebConfigurationManager.AppSettings["mySetting"]; } }
Quelle est la meilleure pratique?
c#
programming-practices
user1944367
la source
la source
WebConfigurationManager.AppSettings
car il est beaucoup plus facile de changer plus tardRéponses:
Ce n'est pas seulement OK. Selon le livre Clean Code, c'est en fait une très bonne pratique, et l'oncle Bob l'encourage vraiment. Une variable utilisée par de nombreuses méthodes pourrait montrer un haut degré de cohésion entre les méthodes. De plus, un haut degré de variables d'objet pourrait également suggérer que ladite classe devrait être divisée en deux, donc les déclarer en tant que variables d'objet pourrait vous aider à trouver des candidats de classe cachés.
Les variables de niveau objet ne sont pas des variables globales, alors n'ayez pas peur de les utiliser si elles doivent être partagées par différentes méthodes.
la source
Encapsuler vos paramètres de manière constante est une excellente idée.
Ce que je fais, c'est créer une classe de paramètres, soit une classe globale statique ou plusieurs classes d'instances que je gérerai ensuite avec l'injection de dépendances. Ensuite, je charge tous les paramètres de configuration dans cette classe au démarrage.
J'ai également écrit une petite bibliothèque qui utilise la réflexion pour rendre cela encore plus facile.
Une fois mes paramètres dans mon fichier de configuration
Je crée une classe statique ou d'instance en fonction de mes besoins. Pour les applications simples avec seulement quelques paramètres, une classe statique convient.
Ensuite, en utilisant mon appel de bibliothèque soit
Inflate.Static
ou,Inflate.Instance
et la chose intéressante est que je peux utiliser n'importe quelle source de valeur clé.Tout le code pour cela est dans GitHub à https://github.com/Enexure/Enexure.Fire.Configuration
Il y a même un paquet nuget:
Code de référence:
la source