Je me bats souvent avec moi-même pour mettre certaines clés dans mon web.config ou dans une classe Constants.cs ou quelque chose comme ça.
Par exemple, si je voulais stocker des clés spécifiques à une application dans tous les cas, je pourrais la stocker et la récupérer dans ma configuration Web via des clés personnalisées ou la consommer en référençant une constante dans ma classe de constantes.
Quand voudriez-vous utiliser des constantes sur des clés de configuration?
Cette question s'applique vraiment à n'importe quelle langue, je pense.
la source
xsd
outil pour générer l'un à partir de l'autre) et utiliser la configuration avecXMLSerializer
(le moyen le plus judicieux de gérer XML en C # de toute façon), afin que vous puissiez valider à l'avance, mais c'est encore un peu plus travail.La modification des constantes nécessite de reconstruire l'application dans la plupart des cas. Autrement dit, les constantes restent constantes lorsque quelqu'un n'a pas accès au code.
Ainsi, toutes les informations que l'utilisateur final doit fournir (et doivent modifier) doivent être enregistrées dans les fichiers de configuration. La plupart des autres doivent passer sous des constantes. Cependant, il doit y avoir des valeurs par défaut légitimes ou une gestion des exceptions d'erreur si les fichiers de configuration sont cassés.
Les éléments qui ne font pas partie de l'abstraction de l'objet (c'est-à-dire si les constantes qui ne sont pas censées être modifiées par des objets externes (appelants) sont susceptibles d'être cachés et signifient essentiellement qu'elles seraient mieux en tant que constantes privées que les fichiers de configuration.
Lorsqu'il existe de nombreux éléments de configuration qui se rapportent à des objets différents, non liés les uns aux autres, et lorsque tant d'objets doivent extraire (les mêmes ou leurs propres) fichiers de configuration, il est probable que ces éléments auraient dû être constants.
la source
Une règle générale simple consiste à créer des constantes lorsque vous savez que vous allez travailler avec un ensemble fixe de valeurs qui, selon vous, peuvent être appliquées à un contexte donné sans avoir besoin de changer; fournir des configurations externes pour tout le reste.
Un bon exemple de constantes serait si toutes les formes avec lesquelles vous travailliez pouvaient être
SQUARE
ouROUND
. Dans la plupart des langues, vous pourrez tirer parti du fait que cette valeur ne change pas au fil du temps, en l'allouant une seule fois et en optimisant la façon dont elle est accessible.Les configurations externes sont nécessaires lorsque vous devrez récupérer la valeur dynamiquement car vous ne pouvez pas supposer à l'avance la valeur avec laquelle vous allez travailler, mais cela ne signifie pas que vous devez faire un compromis sur les performances: pour les valeurs de configuration que vous attendez d'être présent, une fois fait correctement, vous ne payez que le prix de les récupérer une fois et obtenez toujours tous les avantages.
la source
Vous pouvez également simplement utiliser ce modèle de conception: "convention sur configuration".
http://msdn.microsoft.com/en-us/magazine/dd419655.aspx http://en.wikipedia.org/wiki/Convention_over_configuration
la source
Une constante par définition est un emplacement de mémoire pour une valeur qui ne devrait pas changer (comme PI).
Je suppose que vous vouliez dire «paramètre» et non une constante
En plus de ce qui a été dit, notez que l'exposition de variables à l'entrée utilisateur à partir du fichier de configuration peut endommager l'application.
Lorsque cela est possible, n'exposez pas les valeurs dans le fichier de configuration sans les valider dans le code pour effectuer un contrôle de cohérence. De plus, je suggère que vous ne placiez pas de paramètres de règles métier (tels que le salaire maximum, etc.) dans les fichiers de configuration et que vous n'utilisiez pas non plus de constantes pour ceux-ci. Ces valeurs doivent être stockées dans la base de données avec les définitions de table appropriées afin qu'une certaine sécurité soit appliquée lorsqu'elles sont modifiées et vous pouvez créer automatiquement des versions des valeurs de données (à l'aide de procs stockés ou de journaux db). Bien sûr, cela dépend de la sensibilité de votre application.
Si vous utilisez des fichiers de configuration pour stocker des données, assurez-vous de les versionner.
la source