Paramètres de chargement - Meilleures pratiques
J'en suis au point dans ma première véritable application où je suis ajoutant des paramètres de l'utilisateur. Je suis à l'aide de Java et d'être très OO (et en essayant de garder de cette façon) alors voici mes idées:
- Charge tout dans la
main()
et
passer tous les "bas du front" à l'
objets requis (array) - Même que ci-dessus, mais il suffit de passer le
objet qui contient les données
la ligne - Charge de chaque paramètre
nécessaires dans les différentes classes.
Je comprends une partie de la base des avantages et des inconvénients de chaque méthode (c'est à dire le temps par la taille) mais je suis à la recherche pour certains à l'extérieur de la saisie en tant que pratiques qu'ils ont utilisé avec succès dans le passé.
source d'informationauteur Glenn Nelson
Vous devez vous connecter pour publier un commentaire.
Depuis de configuration /réglages sont généralement chargés une seule fois (au démarrage; ou peut-être quelques fois au cours du programme d'exécution. De toute façon, nous ne parlons pas d'un très fréquentes /processus qui prend du temps), je préfère la simplicité par rapport à l'efficacité.
Que les règles numéro de l'option (3). Configuration de chargement seront dispersées au-dessus de l'endroit.
Je ne suis pas entièrement sûr de ce que la différence entre (1) et (2) dans votre liste. (1) signifie "passage discret paramètres" et (2) signifie "passage d'un objet contenant l'intégralité de la configuration"? Si oui, je préfère (2) sur (1).
La règle de base ici est que vous devez garder les choses simples et concentré. L'avantage de la lecture de la configuration dans un seul endroit, c'est qu'il vous donne un meilleur contrôle dans le cas où la source des changements de configuration à un certain point.
Quelqu'un doit se lever pour la prétendue norme Java, le Les préférences de l'API... et c'est la plus récente incarnation de JDK6. Édité pour ajouterpuisque l'auteur semble avertis en XML, ce qui est plus approprié qu'avant. De la pensée, je crois que vous pouvez travailler XML juju avec
Propriétés
trop, si l'esprit vous y emmener.Connexes sur DONC: Les préférences de l'API vs Apache solutionEst un maître des préférences de la classe une bonne idée?
(eh bien, c'est sur tous les, debout, je suis prêt à le faire.)
Utiliser un SettingsManager classe ou quelque chose de semblable qui est utilisée pour résumé l'obtention de tous les paramètres de données. À chaque point dans le code où vous avez besoin d'un paramètre d'une requête sur la SettingsManager classe - quelque chose comme:
Vous ensuite de déléguer l'ensemble de la logique de la façon dont les paramètres sont récupérés à ce seul gestionnaire de classe, dont la mise en œuvre, vous pouvez modifier /optimiser au besoin. Par exemple, vous pourriez mettre en œuvre les SettingsManager pour récupérer les paramètres d'un fichier de config, ou une base de données, ou d'un autre magasin de données, régulièrement actualiser les paramètres, gérer le cache des paramètres qui sont coûteux à extraire, etc. Le code à l'aide des paramètres reste au courant de toutes ces implementaton décisions.
Pour un maximum de flexibilité, vous pouvez utiliser une interface au lieu d'une classe réelle, et que les différents gestionnaires de mettre en œuvre l'interface: vous pouvez échanger et nécessaires à un point central, sans avoir à changer le code sous-jacent à tous.
.NET, il ya un assez riche ensemble de classes de configuration (dans le Système.De Configuration) de l'espace de noms qui fournissent ce genre de chose, et ça marche assez bien.
Je ne suis pas sûr de Java équivalent, mais c'est un bon modèle.
Voici un tutoriel sur les Propriétés de la classe. À partir de la documentation Javadoc (Propriétés):
Le tutoriel donne l'exemple suivant d'instanciation pour une utilisation typique:
Vous pouvez, bien sûr, également rouler votre propre système assez directement à l'aide d'un fichier de base de stocker et de XML ou YAML analyseur. Bonne chance!
Nous avons récemment commencé à utiliser de la JSR-330 d'injection de dépendance (à l'aide de Guice à partir de SVN) et a constaté qu'il était possible de lire dans un fichier de Propriétés (ou n'importe quelle autre carte) et le lier à l'intérieur de Guice dans le module dans le code de démarrage de sorte que le
chaîne a été injecté avec la valeur correspondant à la clé lorsque le code a été appelé. C'est la façon la plus élégante que j'ai jamais vu pour la résolution de ce problème!!!!
Vous ne pas avoir à transporter des objets de configuration autour de votre code ou saupoudrer tous les types de magie les appels de méthode dans chaque coin du code pour obtenir les valeurs que vous venez de mentionner à Guice vous en avez besoin, et il est là.
Remarque: j'ai eu un coup d'oeil à Guice, Soudure (Coutures) et le Printemps qui fournissent tous injection, parce que nous voulons JSR 330 dans notre propre code, et j'aime Guice le meilleur actuellement. Je pense que la raison est parce que Guice est la plus claire des liaisons par opposition à la sous le capot de la magie qui se passe avec de la Soudure.