Gibt es gängige Methoden zum Kommentieren der regulären Ausdrücke: Inline-Kommentare, die auf einen anderen Teil von RegEx verweisen, oder allgemeine Kommentare für alle Ausdrücke?
documentation
coding-style
comments
m0nhawk
quelle
quelle
Antworten:
Meiner Ansicht nach ist es eine gute Praxis, in Kommentaren genau anzugeben, was die allgemeine Idee des regulären Ausdrucks ist. Dies erspart anderen Entwicklern (oder manchmal Ihnen selbst) den Aufwand, den regulären Ausdruck in einen Parser wie RegExr einzufügen , nur um zu verstehen, was er tut.
quelle
Dies ist eine sprachspezifische Antwort, aber in der Frage wird keine Sprache angegeben.
Das Buch "Dive Into Python" schlägt vor, Kommentare mithilfe von ausführlichen regulären Ausdrücken zu implementieren :
Beispiel:
Quelle und weitere Details hier
Diese Methode hat den kleinen Nachteil, dass der Aufrufer wissen muss, dass das Muster in einem ausführlichen Format geschrieben ist, und es entsprechend aufrufen muss.
quelle
re.compile
an der Stelle verwenden, an der Sie Ihr Muster definieren, und nur das resultierende Objekt speichern. Auf diese Weise müssen die Musterkompilierungsflags (einschließlichre.VERBOSE
) nicht vom Muster selbst getrennt werden.#
wenn ich das ausführliche Flag verwende? Übrigens: Die Quelllinks scheinen ausgefallen zu sein.#
kann also buchstäblich innerhalb einer Zeichenklasse abgeglichen werden:[#]
(Quelle: docs.python.org/3/library/re.html#re.X )Normalerweise schreibe ich einen regulären Ausdruck und erkläre nicht die einzelnen Teile des regulären Ausdrucks, sondern dessen Zweck. Das ist was und warum. Dies ist ein bisschen wie die Frage "Wie sollen meine Kommentare aussehen?" zu dem man sagen würde " Schreiben Sie nicht, was der Code tut, schreiben Sie, warum der Code tut, was er tut "
Wenn Sie nicht versuchen, jemandem über Kommentare im Code etwas über Regexes beizubringen, kann ich nicht erklären, was jedes einzelne Stück tun wird. Wenn Sie mit anderen Programmierern arbeiten, können Sie davon ausgehen, dass man etwas als globale reguläre Ausdrücke kennt.
quelle
Ich denke, es hängt wirklich davon ab, wie Sie den regulären Ausdruck zusammensetzen. Im Allgemeinen halte ich es für eine schlechte Idee, Kommentare in die eigentliche Regex-Zeichenfolge selbst einzufügen (soweit ich weiß, in den meisten Szenarien nicht möglich). Wenn Sie wirklich bestimmte Teile eines regulären Ausdrucks kommentieren müssen (versuchen Sie, jemanden zu unterrichten?), Teilen Sie jeden Block in separate Zeichenfolgen in eigenen Zeilen auf und kommentieren Sie jede Zeile mit dem normalen Kommentierungsprozess für Ihre Programmiersprache. Ansonsten ist die Antwort von pleinolijf ziemlich gut.
Beispiel:
quelle
Normalerweise definiere ich eine Zeichenfolgenkonstante, deren Name den Gesamtzweck des regulären Ausdrucks beschreibt.
Beispielsweise:
Sie können einen Kommentar über dieser Konstante hinzufügen, um eine Beschreibung zu erhalten, aber normalerweise sollte der Name der Konstante selbst ausreichen.
quelle
In einigen Szenarien verwenden die Entwickler möglicherweise reguläre Ausdrücke, um Text außerhalb ihrer typischen Domäne abzugleichen. Die ursprünglichen Entwickler haben möglicherweise viele Iterationen durchlaufen, um verschiedene Randfälle zu erfassen, die möglicherweise nur durch diesen iterativen Prozess entdeckt wurden. Daher sind nachfolgenden Entwicklern möglicherweise nicht viele der Randfälle bekannt, mit denen sich die ursprünglichen Entwickler befasst haben, selbst wenn sie den allgemeinen Fall kennen.
In solchen Fällen kann es sinnvoll sein, Beispiele für die Variationen zu dokumentieren. Der Speicherort dieser Dokumentation kann je nach Menge variieren (z. B. nicht unbedingt im Code).
Eine Möglichkeit, dies zu erreichen, besteht darin, davon auszugehen, dass zukünftige Entwickler nur über Grundkenntnisse wie die Funktionsweise regulärer Ausdrücke verfügen, jedoch nicht über Kenntnisse, die Sie (1) vor der Entwicklung der regulären Ausdrücke hatten, die dem nicht unbedingt bekannt wären zukünftige Entwickler oder (2) Kenntnisse, die Sie während der Entwicklung erworben haben (z. B. entdeckte Randfälle).
Wenn Sie beispielsweise während der Entwicklung etwas wie "Oh, ich wusste nicht, dass X diese Form annehmen kann" sagen, lohnt es sich, dies zu dokumentieren (und möglicherweise den Teil des regulären Ausdrucks, der diese Variation behandelt).
quelle
Kommentare sollten nützliche Informationen hinzufügen, die aus dem Code nicht ersichtlich sind.
Es gibt nur wenige Anwendungen, die jeden letzten Zyklus benötigen. Wenn Sie massive Datensätze mit Mustern abgleichen, gibt es vielleicht einen besseren Weg, vielleicht auch nicht, aber für die meisten Dinge ist die zusätzliche Ausführungszeit keine so große Sache.
Und denken Sie daran, dass die nächste Person, die auf Ihren Code stößt und einen Fehler behebt, Sie in sechs Monaten sein könnte, und Sie werden sich auf keinen Fall daran erinnern können, was er tun sollte.
quelle
Extrahieren Sie die RegEx in eine separate Klasse in eine mit einem aussagekräftigen Namen. Dann würde ich den Code mit automatisierten Tests dokumentieren.
Dies wird sicherstellen
Natürlich kann Ihre Klasse mehrere reguläre Ausdrücke enthalten.
quelle