Dies ist ein etwas kontroverses Thema, und ich denke, es gibt ebenso viele Meinungen wie Programmierer. Aber um es besser zu machen, möchte ich wissen, wie es in der Wirtschaft (oder an Ihren Arbeitsplätzen) üblich ist.
An meinem Arbeitsplatz haben wir strenge Kodierungsrichtlinien. Ein Abschnitt davon ist den magischen Zeichenfolgen / Zahlen gewidmet. Es heißt (für C #):
Verwenden Sie in Ihrem Code keine literalen Werte, weder numerische Werte noch Zeichenfolgen, außer um symbolische Konstanten zu definieren. Verwenden Sie das folgende Muster, um Konstanten zu definieren:
public class Whatever { public static readonly Color PapayaWhip = new Color(0xFFEFD5); public const int MaxNumberOfWheels = 18; }
Es gibt Ausnahmen: Die Werte 0, 1 und null können fast immer sicher verwendet werden. Sehr oft sind auch die Werte 2 und -1 in Ordnung. Zeichenfolgen, die für die Protokollierung oder Ablaufverfolgung vorgesehen sind, sind von dieser Regel ausgenommen. Literale sind zulässig, wenn ihre Bedeutung aus dem Kontext klar hervorgeht und künftigen Änderungen nicht mehr unterworfen ist.
mean = (a + b) / 2; // okay
WaitMilliseconds(waitTimeInSeconds * 1000); // clear enough
Eine ideale Situation wäre eine offizielle Studie, die Auswirkungen auf die Lesbarkeit / Wartbarkeit des Codes zeigt, wenn:
- Magische Zahlen / Strings sind überall
- Magische Zeichenfolgen / Zahlen werden vernünftigerweise (oder in unterschiedlichem Umfang) durch konstante Deklarationen ersetzt - und bitte schreien Sie mich nicht an, wenn Sie "vernünftigerweise" verwenden. Ich weiß, dass jeder eine andere Vorstellung davon hat, was "vernünftigerweise" ist
- Magische Zeichenfolgen / Zahlen werden im Übermaß und an Stellen, an denen sie nicht sein müssten, ersetzt (siehe mein Beispiel unten).
Ich möchte dies tun, um einige wissenschaftlich fundierte Argumente zu haben, wenn ich mit einem meiner Kollegen diskutiere, der Konstanten wie die folgenden deklariert:
private const char SemiColon = ';';
private const char Space = ' ';
private const int NumberTen = 10;
Ein anderes Beispiel wäre (und dieses ist in JavaScript):
var someNumericDisplay = new NumericDisplay("#Div_ID_Here");
Kleben Sie DOM-IDs auf Ihre Javascript-Datei, wenn diese ID nur an einer Stelle verwendet wird?
Ich habe die folgenden Themen gelesen:
StackExchange
StackOverflow
Bytes IT-Community
Es gibt viel mehr Artikel, und nach dem Lesen dieser Artikel tauchen einige Muster auf.
Meine Frage ist also, ob wir in unserem Code magische Zeichenfolgen und Zahlen verwenden sollen. Ich bin speziell auf der Suche nach kompetenten Antworten, die nach Möglichkeit durch Referenzen untermauert sind.
NumberTen = 10
Das ist sinnlos, da die Nummer 10 nicht neu definiert wird. MaxRetryCount = 10
Das hat einen Punkt, an dem wir die maximale Anzahl der Wiederholungen ändern möchten. private const char SemiColon = ';';
Dumm. private const char LineTerminator = ';'
; Clever.