38 votes

Meilleur format de fichier de configuration

Je commence un nouveau projet multi-langue complètement dépourvu de cruft. Je dois choisir un format pour les fichiers de configuration. Ceux-ci seront :

  • Écrit par des humains (développeurs, pas utilisateurs finaux)
  • Lu par des machines
  • Entretenu par des humains
  • Travaillé par des éditeurs de texte (pas un outil)

J'ai de nombreuses utilisations différentes, comme :

  • Liste des modules à exécuter
  • Ordre d'exécution des modules
  • Paramètres pour les algorithmes
  • Configuration générale (nom du travail, version du projet, etc.)

Quelques candidats auxquels j'ai pensé :

  • XML
    • Difficile à mettre en place dans un éditeur de texte
  • INI
    • On ne peut faire que de la section-key-value
  • Makefile
    • Oups !
  • JSON
    • Il faut s'échapper " mais la syntaxe est largement connue
  • YAML
    • Les gens doivent apprendre la syntaxe et les messages d'erreur ne sont pas vraiment bons, mais il est agréable d'avoir des références.

Qu'utiliseriez-vous et pourquoi ? Existe-t-il une panacée ou certaines sont-elles mieux adaptées que d'autres ?

20voto

miku Points 63392

Je suggère YAML. YAML est convivial et lisible.

Si les clés et les valeurs sont tout ce dont vous avez besoin, j'opterais pour INI ou similaire.

(L'équipe de Dropwizard gestion des fichiers de configuration est agréable en soi, mais c'est une autre histoire).

9voto

Laserallan Points 5500

Je suis partisan de l'utilisation d'un langage de programmation simple plutôt que d'un format de configuration. Typiquement, je suggérerais Lua.

Je pense que les variables et les expressions sont un moyen fantastique de supprimer la redondance et d'augmenter l'expressivité d'un système de configuration (voir les exemples dans cet article poste )

Je comprends qu'il puisse y avoir des problèmes de compatibilité s'il s'agit d'un projet multilingue, mais je pense que cela devrait au moins être envisagé.

6voto

Brian Agnew Points 143181

Je pencherais plutôt pour XML. Pourquoi ?

  1. il est largement utilisé et compris. La plupart des techniciens peuvent comprendre ce qui se passe.
  2. c'est hiérarchique. Dans tous les cas, sauf les plus simples, vous devrez être en mesure de spécifier une sorte d'imbrication.
  3. il existe un grand nombre d'outils disponibles pour analyser et manipuler le XML (ligne de commande, API, etc.).
  4. il supporte les codages de caractères (important pour I18N)
  5. Peut être validé par rapport à un schéma

Le XML a ses défauts (par exemple, la taxe sur les angles), mais compte tenu de tout ce qui précède, j'opterais pour le XML pour tous les scénarios, sauf les plus simples.

4voto

Jason Tholstrup Points 951

Je dirais que la réponse dépend de qui va l'utiliser.

JSON ou YAML sont probablement un peu plus agréables à regarder mais, comme vous l'avez souligné, l'analyse syntaxique est un peu plus difficile (mais vous allez de toute façon utiliser une bibliothèque, n'est-ce pas ?)

Le XML présente l'avantage que pratiquement tous les développeurs sauront l'utiliser sans trop de difficultés.

Je pencherais probablement pour YAML ou JSON, parce qu'ils ne vous font pas loucher.

3voto

Mike Fitzpatrick Points 111

J'utilise et recommande Lua . Il est facile à apprendre et à intégrer, il est léger et sa licence est libérale. Il a été conçu à l'origine avec des fichiers de configuration riches et flexibles à l'esprit.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X