In Code bei der Arbeit haben wir viele Verwendungen von magischen Zeichenfolgen wie das folgende Code-Snippet:
%Vor%Es gibt also viele Stellen, an denen wir einen String als Parameter übergeben, um zu sehen, ob der Benutzer ein bestimmtes Recht hat. Ich mag das nicht, weil das viele magische Saiten erzeugt.
Was wäre ein besserer Weg, es zu tun?
Enum, Konstante, Klasse?
Verwenden Sie in diesem speziellen Fall eine Enum. Es wird keine magischen Zeichenfolgen geben und wenn sich die Enum ändert (auf eine Weise, die die magische Zeichenfolgenlösung durchbricht), wird die App nicht mehr kompiliert.
%Vor%Dann können Sie einfach haben:
%Vor%Sie könnten auch eine Klasse verwenden, aber dann beschränken Sie sich auf komplexere Szenarien. Zum Beispiel eine einfache Änderung der Enumeration zu etwas wie:
%Vor%Wäre es möglich, bitweise Operatoren für komplexere Berechtigungen zu verwenden (z. B. wenn ein Benutzer entweder Erstellen oder Löschen benötigt):
%Vor%Dies ist auch im .NET-Framework üblich. Beispiele sind System.Windows.DataFormats und System.Net.WebRequestMethods.Http. Sie würden die readonly Variante wünschen:
%Vor%Erstellen Sie eine Klasse, die diese Eigenschaften stark typisiert, wie
%Vor%Dadurch werden Ihre "magischen Zeichenfolgen" an einer Stelle in Ihrem Code gespeichert. Ein enum wird auch funktionieren, ist aber meiner Meinung nach nicht so gut lesbar.
Hinweis: Mein Beispiel soll als Property-Proxy für den angemeldeten Benutzer dienen, also die statische Klasse. Wenn Sie etwas wünschen, das mit direkteren Daten (z. B. einer Liste von Benutzern) arbeiten würde, müsste diese Art von Klasse nicht statisch sein und auf Benutzerkontenbasis instanziiert werden.
Sie können in C # konstante Zeichenfolgen verwenden.
Sie könnten alle Zeichenfolgen in einer Kopfzeile wie folgt definieren:
%Vor%Nicht sicher, ob dies der "beste" Weg ist, aber es ist sicherlich besser, als magische Werte im Code zu haben.
Tags und Links .net magic-string