IMO en utilisant une classe pleine de constantes est très bien pour les constantes. S'ils changent de manière semi-occasionnelle, je recommande d'utiliser AppSettings dans votre configuration et la classe ConfigurationManager à la place.
Quand j'ai des "constantes" qui sont réellement extraites d'AppSettings ou similaires, j'aurai toujours une classe "constantes" qui encapsule la lecture du gestionnaire de configuration. C'est toujours plus significatif d'avoir Constants.SomeModule.Setting
au lieu d'avoir à recourir directement àConfigurationManager.AppSettings["SomeModule/Setting"]
n'importe quel endroit qui veut consommer ladite valeur de réglage.
Points bonus pour cette configuration, car il SomeModule
s'agirait probablement d'une classe imbriquée dans le fichier Constantes, vous pouvez facilement utiliser l'injection de dépendances pour injecter soitSomeModule
directement dans les classes qui en dépendent. Vous pouvez même extraire une interface par-dessus SomeModule
et créer une dépendance à ISomeModuleConfiguration
dans votre code de consommation, cela vous permettrait alors de découpler la dépendance aux fichiers Constants, et même potentiellement de rendre les tests plus faciles, surtout si ces paramètres proviennent d'AppSettings et vous les modifiez à l'aide de transformations de configuration car les paramètres sont spécifiques à l'environnement.