Was ist der bessere Weg, magische String-Keys zu vermeiden? Verwenden von String-Konst-Keys in einer Klasse oder mithilfe von Enumeration?

8

Meine Idee ist, magische String-Schlüssel in meiner Asp.Net MVC-Anwendung zu vermeiden. Dazu möchte ich String-Konstantenschlüssel erstellen, die in der Anwendung freigegeben werden.

Zum Beispiel kann ich TempData[MyClass.Message] oder TempData[MyEnum.Message.ToString()] anstelle von TempData["Message"] schreiben.

%Vor%

und

%Vor%

Meine Fragen sind: Was ist der bessere Weg, um magische String-Keys zu vermeiden? Verwendung von String-Konst-Keys in einer Klasse oder Verwendung der Enumeration zusammen mit ToString() ?

    
LaTeX 14.02.2011, 07:16
quelle

3 Antworten

5

Es liegt an der Vorliebe und der Verwendung.

Sie können die aufgezählten Werte stark typisiert akzeptieren:

%Vor%

Oder

%Vor%

Mit const Strings können Sie nicht.

Sie haben auch eine eingebaute Möglichkeit, die Werte in einer Aufzählung aufzuzählen.

Es gibt eine dritte Option, die Sie nicht vorgestellt haben, nämlich Ihre "Konstanten" in Ihren Konfigurationseinstellungen (App.Config) zu platzieren. Dadurch können Sie sie nach der Kompilierzeit konfigurieren. Vielleicht brauchen Sie das jetzt nicht, aber Sie könnten es in Zukunft tun, also ist es eine Überlegung wert.

Einer davon könnte für Globalisierungszwecke besser sein. Ich bin mir nicht sicher was, da ich noch nie eine App globalisiert habe. Was auch immer in Satellitenbaugruppen funktioniert, nehme ich an.

Grundsätzlich kommt es darauf an, was TempData ist und wie Sie es verwenden wollen.

    
Merlyn Morgan-Graham 14.02.2011, 07:25
quelle
5

Sie sollten sich für Const Strings entscheiden, da es auch Leerzeichen / Sonderzeichen enthalten kann, wenn dies Ihre Anforderungen sind. Ansonsten ändern Sie TempData in Dictionary<MyEnum,object> , was eine bessere Vorgehensweise ist.

    
Mubashir Khan 14.02.2011 07:24
quelle
2

Ich weiß, dass dies beantwortet wurde, aber ich möchte meine Gedanken hier einbringen. Du konzentrierst dich zu sehr auf die Mechanik und nicht auf das Problem, das du hast - was ist "wie komme ich davon, meine Anwendung zu brechen, wenn ich mich dafür entscheide, dass TempData [" Message "] eigentlich Session [" Alert "] sein sollte ( oder so ähnlich.

Magische Zeichenfolgen gelten nicht für Wörterbuchschlüssel - sie gelten für Nachrichten, die an eine Routine gesendet werden, die auf dem Zeichenfolgenwert basiert. Etwas wie "SetStatus ('current')" wäre magisch.

Was Sie hier tun möchten, ist eine zentralisierte Methode für die Verarbeitung von Nachrichten. Erstellen Sie sich eine Hilfsklasse und nennen Sie es "Messaging", wenn Sie möchten - ich bekomme alle Railsys und nenne es "Flash". Dann könntest du etwas Grooves machen wie "Flash.Message (" Hi there ")" - das hält den Mechanismus verborgen (wie es sein sollte) und du brauchst dir keine Gedanken über diese albernen Wörterbuchschlüssel zu machen.

Sie können das auch erweitern - "Flash.Alert ('Oh NO!')" - etc.

    
user1151 14.02.2011 08:08
quelle

Tags und Links