2012-04-11 8 views
1

Ich Refactoring this regular expression C# Zeichenfolge in eine Konstante und ich bin mir nicht sicher, wie es am besten zu nennen (meine Regex Fu ist schwach).Wie lautet der Name dieses regulären Ausdrucks?

@"^(?!\s\s)"

Hat nicht das Fragezeichen etwas bedeuten, die optional ist? Was ist die Frage, die Frage ist optional?

Ich habe festgestellt, dass als Entwickler, müssen Sie etwas klar verstehen, bevor Sie es richtig benennen können (auch: Naming is Hard), also möchte ich dies klar verstehen und dann einen richtigen Namen geben.

Wie lautet der Name dieses regulären Ausdrucks?

Ich überlege LinesThatDoNotStartWithTwoSpaces oder DoesNotStartWithTwoSpaces.

+5

Ich benutze immer diese Regel: Refactor nicht Dinge, die Sie nicht verstehen. –

+3

+1 für so viel Pflege zu einem variablen Namen ... viel Liebe Mann .. viel Liebe! – Galilyou

+0

@ 32bitkid Liebe, dass. – lance

Antwort

1

ich immer versucht, Not in Variablennamen zu verwenden. Zum Beispiel NotHuman, seine Bedeutung ändert sich mit der Definition von Human. Variablenname sollte auch sagen, was-this-is, aber nicht was-this-can-do, also denke ich, es ist keine gute Idee, Verb im Variablennamen zu verwenden, wie Search, Match.

Für Ihren Fall, wie wäre es mit LineWithoutIndentation, ähnlich wie die Eigenschaft text-indent in CSS3.

0

Es heißt Negative lookahead

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. – Crippledsmurf

+0

@CrippledSmurf: Ich hätte Code eingefügt, wenn die Frage war, wie man ein negatives Lookahead schreibt, aber die Frage enthielt bereits das negative Lookahead. Die Frage war, wie das Konstrukt * genannt wurde *. Der Name "Negative Lookahead", den ich aufgenommen habe, * ist der wesentliche Teil der Antwort. Der Link ist nur der Anspruch, ich könnte genau die gleiche Antwort ohne den Link geschrieben haben. Diese Antwort wird nicht ungültig, wenn sich die verknüpfte Seite ändert. –

5

Das Konstrukt selbst ein negativer Look-Ahead ist. Sie gibt eine Gruppe an, die nach Ihrem Hauptausdruck nicht übereinstimmen kann.

In diesem Fall stimmt es überein, wenn die übereinstimmende Zeile nicht mit zwei Leerzeichen (Leerzeichen) beginnt.

Ich würde nennen die Regex als NotMatchLineStartingWithTwoWhiteSpaces

Verwandte Themen