2011-01-06 2 views
5

Ich habe kürzlich einen Vorschlag für die Regex-Muster gefunden, die in unserer Anwendungscode-Basis verwendet werden, um in einer Nachschlagetabelle zusammengefasst und von dort abgerufen statt explizit in der Programmlogik fest codiert.Verwendung einer Nachschlagetabelle für Regex-Muster

Kann jemand irgendwelche Gedanken bezüglich der Weisheit davon teilen?

Meine ersten Gedanken waren, dass es die Muster einfacher zu ändern macht, was sowohl Vor- als auch Nachteile hat. Aber im Grunde sehe ich eine Regex-Zeichenkette selbst als eine logische Einheit, die (effektiv) ausgeführt wird, so dass ich sie ein wenig unruhig finde, wenn ich sie in einer Nachschlagetabelle ablege.

Wer denkt an jemanden?

Dank

Antwort

2

Ich denke, das ist eine ausgezeichnete Idee, wenn Sie es schaffen, ein Regex-Muster zu verbessern (oder sogar ein Problem damit zu beheben), werden Sie es an einem einzigen Ort ändern und nicht überall (wahrscheinlich das Motiv) dafür tun).

Dies reduziert die Anzahl der möglichen Fehler im Programm (oder erhöht sie, wenn Sie es falsch ändern. Dies sollte sich jedoch fast sofort in Tests manifestieren und Sie müssen es nur noch in einem beheben Platz, im Gegensatz zu überall ... wieder einmal fehleranfälliger).

In Bezug auf es als eine Einheit der Logik zu sehen, würde es hilfreich sein, wenn Sie es als eine Reihe von Anweisungen, die in einer Referenzbibliothek statt der Logik selbst gehalten werden? Die Logik selbst wird vom Regex-Prozessor und nicht von der Vorlage ausgeführt, die Sie in Code eingegeben haben. Daher sehe ich sie als einen geeigneten Kandidaten für die Speicherung in einer Nachschlagetabelle.

1

Wenn es in sonst unnötigen SQL-Verbindungen führen geht, würde ich sagen, nein. Tu es nicht. Flieh in die Berge.

Aber ansonsten, wenn sie oft wiederholt werden, darüber nachdenken, wie Ihr Code refaktoriert werden kann. Sollten Sie sie in Funktionen oder Klassen verwenden, die auf mehreren Seiten enthalten sind? Wenn die Antwort nein ist, dann mach weiter, ich sehe kein Problem damit.