6 Stimmen

Wie man das Hartkodieren von Zeichenfolgen vermeidet

Dies ist eine Frage zu den besten Codierungspraktiken. Ich möchte wissen, wie der Konsens darüber aussieht, wie man am besten das Hardcodieren von Zeichenfolgen und Werten in einer .NET-Anwendung vermeiden kann. Was ich bisher gesehen habe, wo ich zuvor gearbeitet habe:

  • Verwendung von Ressourcen .resx-Dateien
  • Speichern dieser Werte und Zeichenfolgen in App.config oder web.config
  • Erstellung einer statischen Klasse ApplicationStrings und Deklarierung aller Zeichenfolgen und Werte darin:

    public static class ApplicationStrings
    {
        #region constants
        public const string APPLICATION_NAME = "X";
        public const string APPLICATION_RESOURCEMANAGER_NAME = "ResourceManagerX";
        public const string APPLICATION_DEFAULT_LOGFILENAME = "log.txt";
    }

Ist jedoch die 3. Methode nicht einfach ein weiteres Hardcoding? Macht es Sinn, eine solche Klasse zu haben? Der Vorteil wäre, dass alle Zeichenfolgen an einem Ort sind, aber vermeidet das wirklich ein Hardcoding?

Wenn Sie auch andere Gewohnheiten für diese Situation entwickelt haben, fühlen Sie sich frei zu posten.

1 Stimmen

Ich hätte hier lieber statische schreibgeschützte Felder als Konstanten. Konstanten sind eher für Dinge gedacht, die immer den gleichen Wert haben werden. Dies macht ihre binäre Versionssemantik ein wenig ärgerlich.

5voto

Joey Punkte 329386

Der Hauptvorteil besteht tatsächlich darin, alle Zeichenketten an einem Ort zu haben und Sie brauchen sie nur dort zu ändern, um das gesamte Programm zu aktualisieren. Wenn verschiedene Teile Ihres Programms dieselbe Zeichenkette verwenden und eine Instanz aktualisiert wird, eine andere jedoch nicht, haben Sie ein Problem. Das gilt übrigens für alle Literalwerte.

Und dann gibt es mit Ressourcendateien den Vorteil von i18n und l10n. Wenn Sie es benötigen, aber viele große Anwendungen sollten es.

1 Stimmen

Der Vorteil von Ressourcendateien ist, dass sie bei Bedarf durch andere Versionen ersetzt werden können. Das kannst du natürlich auch mit Quellcodedateien machen, aber irgendwie wird klarer, dass es sich um unterschiedliche Daten (i18n und l10n) handelt, nicht um unterschiedliche Funktionalitäten.

1voto

plague Punkte 1858

Im Allgemeinen glaube ich, dass es eine gute Praxis ist, alle konfigurierbaren Daten in einer zentralen Konfigurationsdatei zu speichern, damit alle Daten an einem Ort sind und von anderen Apps geteilt werden können

0 Stimmen

Vielen Dank, dass Sie mich an die Dateien app.config und web.config erinnert haben, ich habe die ursprüngliche Frage aktualisiert.

1voto

Barry Kaye Punkte 7452

Nach meiner Meinung ist ApplicationSettings nur nützlich, wenn Ihre Einstellungen (i) wirklich Konstanten sind und (ii) natürlich wirklich öffentlich sind. Wenn einer dieser Fälle nicht zutrifft, ist dies nicht ideal und Ihre Wahl ist zurück zu einer .config-Datei .resx

0voto

Mark Segal Punkte 5259

Nun, ich denke, dass ApplicationStrings eine gute Lösung ist

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X