J'ai été ressassant des fichiers de configuration et de leur relation à code pour un certain temps maintenant, et en fonction du jour et de la direction du vent mes opinions semblent changer. De plus en plus et si je reviens à la réalisation que j'ai d'abord eu lors de l'apprentissage de Lisp: il y a peu de différence entre les données et le code. Cela semble d'autant plus vrai pour les fichiers de config. Quand on les regarde dans la bonne lumière un script Perl est un peu plus d'un fichier de configuration de perl. Cela a assez lourd de conséquences pour des tâches telles que la QA et de divisions du travail qui devrait être responsable de la modification des fichiers de configuration.
Le fluage de fichier de config à part entière de la langue est généralement lente et semble être dicté par le désir d'avoir un système générique. La plupart des projets semblent commencer petit avec un peu de config éléments comme le lieu d'écrire des journaux, où chercher les données, les noms d'utilisateur et mots de passe, etc. Mais ensuite, ils commencent à se développer: caractéristiques de démarrage pour être en mesure d'être allumé ou éteint, les horaires et l'ordre des opérations de commencer à être contrôlés, et, inévitablement, quelqu'un veut commencer à ajouter de la logique (par exemple, utilisation 10 si la machine est X et 15 si la machine est Y). À un certain point, le fichier de configuration devient un langage spécifique au domaine, et un mal écrit.
Maintenant que j'ai divaguait sur la scène, voici mes questions:
- Quel est le vrai but de la config fichier?
- Si une tentative est faite pour garder les les fichiers de configuration simple?
- Qui devrait être chargé de faire des modifications (développeurs, utilisateurs, admins, etc.)?
- Devraient-ils être source contrôlée (voir question 3)?
Comme je l'ai dit plus tôt, mes réponses à ces questions maj constamment, mais pour l'instant je pense:
- afin de permettre à un non-programmeurs de changement de gros morceaux de comportement rapidement
- oui, tout ce qui n'est pas grossièrement grain doit être dans le code
- les utilisateurs devraient être responsables de la les fichiers de configuration et les programmeurs doivent être responsable d'une configuration couche entre les fichiers de configuration et de code qui donne plus de contrôle de précision de l'application
- non, mais la plus fine couche du milieu devrait être