Wo soll ich Konstanten in Skripten definieren?

8

Wo soll ich beim Schreiben von Skripten mit einer modernen Skriptsprache, z. B. Powershell oder JavaScript, Konstanten definieren? Sollte ich alle Konstanten global machen, um die Lesbarkeit und Benutzerfreundlichkeit zu gewährleisten, oder ist es sinnvoll, Konstanten so nah wie möglich an ihren Gültigkeitsbereichen zu definieren (in einer Funktion beispielsweise, wenn sie nicht anderweitig benötigt wird)? Ich denke hauptsächlich an Fehlermeldungen, Fehler-IDs, Pfade zu Ressourcen oder Konfigurationsoptionen.

bshacklett
quelle

Antworten:

12

Konstanten sind gut geeignet, um nur beschreibende Variablennamen anzugeben, um die Probleme mit magischen Zahlen zu vermeiden. Sie verursachen jedoch ein ähnlich ärgerliches Problem, da sie den tatsächlich verwendeten Wert nicht identifizieren können, wenn die Konstante außerhalb ihrer Verwendung definiert wird.

Mein Vorschlag in allen Sprachen: Definieren Sie Konstanten so nah wie möglich an ihrer tatsächlichen Verwendung. Wenn nur in einer Klasse verwendet; nur in diese Klasse setzen. Mehrere Klassen würden bedeuten, sicherzustellen, dass sie sich mindestens im selben Namespace befinden wie alle Klassen, die sie verwenden.

In Javascript bedeutet dies, dass der Umfang so lexikalisch wie möglich für alle Verwendungen ist.

Jimmy Hoffa
quelle
they cause a similarly annoying problem of not being able to identify the value actually being usedSollten IDEs nicht eine "Gehe zur Definition" haben oder in der Lage sein, den Wert wie jede andere Variable in der Vorschau anzuzeigen? Die Metadaten sind für Skripte wahrscheinlich schwieriger zu verwenden.
StuperUser
1
Normalerweise verwendet man keine IDE, um Shell-Skripte zu erstellen. Und selbst wenn man es ist, eignet sich die dynamische Natur nicht dazu, das Werkzeug "Zur Definition gehen" neu zu schärfen.
Wyatt Barnett
1
@StuperUser Ich bin ein VS StuperUser, der jetzt 12 Jahre alt ist, also bin ich alle dafür, die verfügbaren Werkzeuge zu verwenden, aber ich denke, ein besserer Ansatz beim Entwerfen besteht darin, darüber nachzudenken, wie der Code ohne die Werkzeuge so wartbar wie möglich sein kann sprachübergreifende Konzepte mit weniger Werkzeugen zu entwerfen, die normalerweise keinen Einfluss auf die Nützlichkeit der Werkzeuge haben, sofern verfügbar. Werkzeuge können manchmal dazu führen, dass schlechte Designs leicht zu warten sind, weshalb die Abhängigkeit von Werkzeugen häufig in den Vordergrund gerückt wird.
Jimmy Hoffa
similarly annoying problem of not being able to identify the value actually being usedMan muss nicht sehr oft überprüfen, dass GRAVITATIONAL_ACCELERATION9.80665 ist. Sobald eine Konstante festgelegt ist, sollten Sie sich für den Wert abstrahieren und im Namen der Sache denken.
Tulains Córdova
1

Anstatt Konstanten zu verwenden, können Sie auch eine Konfigurationsdatei verwenden. Mit JavaScript können Sie leicht analysierbare Dateien im JSON-Format erstellen. Ich weiß nichts über PowerShell.

Konfigurationsdateien haben den Vorteil, dass sie zentralisiert sind. Der Name der Eigenschaft im Funktionsumfang (wenn Sie sie abrufen) ermöglicht es Ihnen jedoch, die Lesbarkeit aufrechtzuerhalten.

Florian Margaine
quelle
Manchmal kann das übertrieben sein. Insbesondere, wenn der Wert nur intern im Code verwendet und dem Benutzer nicht angezeigt wird. Ich ziehe es vor, meine Konfigurationsdateien minimal zu halten, damit die App einfacher einzurichten ist.
David Hogue