Question

Je travaille sur plusieurs projets distincts mais liés dans différents langages de programmation. Certains de ces projets doivent analyser les noms de fichiers écrits par d’autres projets et s’attendre à un certain modèle de nom de fichier.

Ce modèle est maintenant codé en dur à plusieurs endroits et dans plusieurs langues, ce qui en fait une bombe de maintenance. Il est assez facile de définir ce modèle exactement une fois dans un projet donné, mais quelles techniques permettent de le définir une fois pour toutes pour tous les projets et pour toutes les langues utilisées?

Était-ce utile?

La solution

Créez un langage spécifique au domaine, puis compilez-le dans le code de chacune des langues cibles que vous utilisez serait la meilleure solution (et la plus élégante).

Ce n’est pas difficile de créer un ADSL - de l’intégrer dans quelque chose (comme dans Ruby depuis que c’est le "dans" en ce moment, ou dans un autre langage comme LISP / Haskell ...), ou de créer une grammaire à partir de rien (utilisez Antlr?). Il semble que le projet soit grand, alors ce chemin vaut la peine.

Autres conseils

Je stockais le motif dans un simple fichier texte et, en fonction d'un projet particulier:

  • Intégrez-le dans le source au moment de la construction (prétraitement)
  • Si ce qui précède n'est pas une option, traitez-le comme un fichier de configuration lu à l'exécution

Éditer: Je suppose que le motif n’est pas plus compliqué qu’un regex, sinon je choisirais la solution DSL d’une autre réponse.

Vous pouvez utiliser un script, un processus ou un service Web commun pour générer les noms de fichier (en fonction de votre configuration).

Je ne sais pas de quelles langues vous parlez, mais la plupart d'entre elles peuvent utiliser des bibliothèques dynamiques externes DLL / objets partagés et exporter des fonctionnalités communes à partir de cette bibliothèque. Par exemple, vous implémentez la fonction get nom de fichier dans une bibliothèque c et utilisez acrros rest of languages.
Une autre option consistera à créer dynamiquement du code commun dans le cadre du processus de construction de chaque langue, ce qui ne devrait pas être trop complexe.
Je suggérerai d'utiliser l'approche de lien dynamique si possible (vous n'avez pas donné suffisamment d'informations pour le déterminer), car la maintenance de cette solution sera beaucoup plus facile que la génération de code pour différentes langues.

Mettez le modèle dans une base de données - le moyen le plus simple et le plus pratique pourrait être d'utiliser une base de données XML. Cette base de données sera accessible à tous les projets et ils liront le motif à partir de là

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top