Ich kämpfe oft mit mir selbst darüber, ob ich bestimmte Schlüssel in meine web.config oder in eine Constants.cs-Klasse oder so etwas stecken soll.
Zum Beispiel, wenn ich anwendungsspezifische Schlüssel für jeden Fall speichern möchte. Ich könnte sie speichern und über benutzerdefinierte Schlüssel aus meiner Webkonfiguration abrufen oder sie verbrauchen, indem ich auf eine Konstante in meiner Konstantenklasse verweise.
Wann möchten Sie Konstanten anstelle von Konfigurationsschlüsseln verwenden?
Diese Frage trifft wirklich auf jede Sprache zu, die ich denke.
quelle
xsd
Tool, um eine aus der anderen zu generieren) und die Konfiguration mitXMLSerializer
(die sinnvollste Methode, um XML in C # zu verarbeiten) verwenden, damit Sie im Voraus validieren können, aber es ist immer noch eine zusätzliche Arbeit.Das Ändern von Konstanten erfordert in den meisten Fällen die Neuerstellung der Anwendung. Anders ausgedrückt, Konstanten bleiben Konstanten, wenn jemand keinen Zugriff auf Code hat.
Daher sollten alle Informationen, die der Endbenutzer bereitstellen (und ändern muss), in die Konfigurationsdateien aufgenommen werden. Die meisten anderen müssen unter Konstanten gehen. Es muss jedoch legitime Standardeinstellungen oder Fehlerausnahmebehandlung geben, wenn die Konfigurationsdateien beschädigt sind.
Elemente, die nicht Teil der Abstraktion des Objekts sind (dh, wenn Konstanten, die nicht von externen (aufrufenden) Objekten geändert werden sollen, ausgeblendet werden und im Wesentlichen bedeuten, dass sie als private Konstanten besser geeignet sind als Konfigurationsdateien).
Wenn es viele Konfigurationselemente gibt, die sich auf verschiedene Objekte beziehen, die nicht miteinander verwandt sind, und wenn so viele Objekte (gleiche oder eigene) Konfigurationsdateien abrufen müssen, besteht die Möglichkeit, dass diese Dinge Konstanten gewesen sein sollten.
quelle
Eine einfache Faustregel besteht darin, Konstanten zu erstellen, wenn Sie wissen, dass Sie mit einem festen Satz von Werten arbeiten, von denen Sie wissen, dass sie auf einen bestimmten Kontext angewendet werden können, ohne dass Änderungen erforderlich sind. Stellen Sie externe Konfigurationen für alles andere bereit.
Ein gutes Beispiel für Konstanten wäre, wenn alle Formen, mit denen Sie gearbeitet haben, entweder
SQUARE
oder sein könntenROUND
. In den meisten Sprachen können Sie die Tatsache nutzen, dass sich dieser Wert im Laufe der Zeit nicht ändert, indem Sie ihn nur einmal zuweisen und den Zugriff optimieren.Externe Konfigurationen sind erforderlich, wenn Sie den Wert dynamisch abrufen müssen, da Sie den Wert, mit dem Sie arbeiten, nicht im Voraus annehmen können. Dies bedeutet jedoch nicht, dass Sie Leistungskompromisse eingehen müssen: Für Konfigurationswerte, die Sie erwarten Wenn Sie dies richtig machen, zahlen Sie nur den Preis für das einmalige Abrufen und erhalten trotzdem alle Vorteile.
quelle
Sie können auch einfach dieses Entwurfsmuster verwenden: "Konvention über Konfiguration".
http://msdn.microsoft.com/en-us/magazine/dd419655.aspx http://en.wikipedia.org/wiki/Convention_over_configuration
quelle
Eine Konstante ist per Definition ein Speicherort für einen Wert, der sich nicht ändern sollte (z. B. PI).
Ich nehme an, Sie meinten "Parameter" und keine Konstante
Beachten Sie außerdem, dass das Offenlegen von Variablen für Benutzereingaben aus der Konfigurationsdatei der Anwendung schaden kann.
Wenn möglich, machen Sie keine Werte in der Konfigurationsdatei verfügbar, ohne sie im Code zu validieren, um eine Überprüfung der Integrität durchzuführen. Außerdem schlage ich vor, dass Sie keine Geschäftsregelparameter (wie z. B. maximales Gehalt usw.) in Konfigurationsdateien platzieren und für diese auch keine Konstanten verwenden. Solche Werte sollten in einer Datenbank mit den entsprechenden Tabellendefinitionen gespeichert werden, damit beim Ändern eine gewisse Sicherheit erzwungen wird und Sie automatisch Versionen der Datenwerte erstellen können (mithilfe von gespeicherten Prozessen oder Datenbankprotokollen). Dies hängt natürlich davon ab, wie sensibel Ihre Anwendung ist.
Wenn Sie jemals Konfigurationsdateien zum Speichern von Daten verwenden, stellen Sie sicher, dass Sie diese versionieren.
quelle