Frage

Ich arbeite an mehreren unterschiedlichen, aber miteinander verbundene Projekte in verschiedenen Programmiersprachen. Einige dieser Projekte müssen Dateinamen von anderen Projekten geschrieben analysieren, und erwarten einen bestimmten Dateinamen Muster.

Dieses Muster wird nun an mehreren Stellen fest einprogrammiert und in mehreren Sprachen, es ist eine Wartung Bombe zu machen. Es ist ziemlich einfach, dieses Muster genau einmal in einem bestimmten Projekt zu definieren, aber was sind die Techniken für die es einmal zu definieren und für alle für alle Projekte und für alle Sprachen verwendet?

War es hilfreich?

Lösung

eine Domain Specific Language Erstellen, Kompilieren dann, dass in den Code für jede der Zielsprachen, die Ihnen die beste Lösung verwenden wäre (und eleganteste).

Es ist nicht schwierig, eine DSL zu machen - verwelken es in etwas einbetten (wie innerhalb Rubin da es das ‚in‘, was gerade jetzt, oder eine andere Sprache wie Lisp / Haskell ...) oder eine Grammatik von Grund auf (Verwendung erstellen Antlr?). Es scheint, wie das Projekt groß ist, dann ist dieser Weg für Sie lohnt.

Andere Tipps

Ich würde speichern Sie das Muster in einer einfachen Textdatei und in Abhängigkeit von einem bestimmten Projekt:

  • Einbetten es in der Quelle zum Zeitpunkt der Erstellung (Vorverarbeitung)
  • Wenn die oben nicht möglich ist, behandelt es als eine Konfigurationsdatei zur Laufzeit
  • lesen

Edit: Ich nehme an dem Muster etwas ist nicht komplizierter als eine regex, sonst ich mit der DSL-Lösung aus einer anderen Antwort gehen würde

.

Sie könnten ein gemeinsames Skript, verarbeiten oder Web-Service verwenden, um die Dateinamen zu erzeugen (je nach Set-up).

Ich weiß nicht, welche Sprachen Sie sprechen aber die meisten Sprachen externen dynamischen Bibliotheken DLLs verwenden können / Shared Objects und Export gemeinsame Funktionalität aus dieser Bibliothek. Zum Beispiel können Sie Funktion get Dateinamen in einfachen c lib implementieren und acrros übrigen Sprachen verwenden.
Eine weitere Option wird gemeinsam Code erstellen dynamisch als Teil des Build-Prozesses für jede Sprache nicht zu komplex sein sollte.
Ich werde mit dynamischen Link-Ansatz vorschlagen, wenn möglich (nicht genügend Informationen gegeben hat, dies zu bestimmen), da diese Lösung die Aufrechterhaltung viel einfacher sein wird, dann für verschiedene Sprachen Codegenerierung beibehalten wird.

Legen Sie das Muster in einer Datenbank - die einfachste und komfortable Art und Weise unter Verwendung von XML-Datenbank werden könnte. Diese Datenbank wird von allen Projekten zugänglich sein und sie werden die Muster von dort

lesen
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top