Viele codierte Strings im Code verwenden

8

Wenn ich meinen Code anschaue, schreibe ich Dinge wie ..

%Vor%

Oder

%Vor%

Machen Sie das Jungs? Wann ist das in Ordnung und wann solltest du das nicht machen? Was, wenn überhaupt, wäre ein besserer Ansatz, um dies zu schreiben, wenn überhaupt?

Danke für die Kommentare: Ich denke, ich sollte was hinzufügen, wenn (für dieses Beispiel) ich diesen Rollenvergleich nur einmal verwende? Ist es noch eine bessere Idee, eine ganz neue Klasse zu machen? Auch sollte ich 1 Klasse namens "Konstanten" haben mehrere Klassen, die bestimmte Konstanten halten, wie zum Beispiel "Rollen" -Klasse?

    
Nick LaMarca 29.02.2012, 15:29
quelle

7 Antworten

23

Nein. Benutze keine " Zauberzeichen ". Erstellen Sie stattdessen eine statische Klasse mit Konstanten oder eine Aufzählung, wenn Sie können.

Zum Beispiel:

%Vor%

Verwendung:

%Vor%

Hier ist ein gute Diskussion über verschiedene Lösungen .

    
jrummell 29.02.2012, 15:33
quelle
2

Es ist immer besser, die hartcodierten Strings separat als Konstanten zu deklarieren, statt jedesmal eine neue Zeichenkette zu deklarieren. Es hält Code sauber und reduziert Fehler, die durch Tippfehler verursacht werden.

Die Frage, ob das getan werden soll oder nicht, hängt vom jeweiligen Szenario ab.

    
Haris Hasan 29.02.2012 15:33
quelle
2

Ich glaube, ein besserer Ansatz besteht darin, Anwendungseinstellungen zu verwenden, was bedeutet, dass Sie das nie tun werden Sie müssen Ihren Code neu kompilieren, wenn sich die Werte für "Kunde" oder "Filiale" ändern. Magische Werte sind offensichtlich schlecht, und dies wäre ein guter erster Schritt / Option, um von ihnen wegzukommen. Zusätzlich hält es Ihre Werte an einem Ort, und ich glaube auch, dass Sie die Einstellungen neu laden können zur Laufzeit ohne Neustart der Anwendung (obwohl ich das selbst nicht ausprobiert habe).

ZB:

%Vor%     
Jeb 29.02.2012 15:36
quelle
1

Ich würde eine statische Rollenklasse erstellen:

%Vor%

Dann in Ihrem Code:

%Vor%

Alternativ erfordert dies etwas mehr Setup als den RoleProvder (abhängig von Web oder Not) bietet viele gute Methoden.

    
Joe 29.02.2012 15:33
quelle
0

Nun, meiner Meinung nach liegt es an Ihnen und hängt von Ihrem Anwendungsdesign ab. Ich betrachte es von der positiven Seite - wenn die Anwendung so funktioniert, wie es funktionieren soll, ist alles gut. IMHO

    
Andrew 29.02.2012 15:32
quelle
0

Polimorphismus ist eine Sache, aber hardcodierte Strings entlang Ihres Codes zu verwenden, ist überhaupt nicht gut. Es ist viel besser, eine Variable zu definieren, die den String enthält, und diese Variable entlang des Codes zu verwenden. In diesem Fall, wenn Sie etwas ändern müssen (glauben Sie mir, Sie werden), können Sie nur den Wert dieser Variablen ändern und es ist fertig (weniger Fehler auch!)

    
Michal B. 29.02.2012 15:34
quelle
0

Aus Gründen der Wartbarkeit sollten Sie String-Vergleicher nach Möglichkeit formatieren, entweder als benannte Konstanten oder als Enumeration. Der Vorteil für den Programmierer besteht darin, dass Sie Änderungen lokalisieren können. Auch wenn Sie ein Refactoring-Tool verwenden, kann es sehr mühsam und fehleranfällig sein, alle Stellen zu finden, an denen eine Zeichenfolge verwendet wird. Möglicherweise haben Sie nur einen Ort, an dem Sie diesen Vergleich heute durchführen, aber Sie oder ein zukünftiger Betreuer können dies auf andere Teile des Codes ausdehnen. Auch die Klasse selbst kann wachsen und muss auseinander gebrochen werden. Diese Dinge neigen dazu, im Laufe der Zeit auf einem Programm zu schleichen.

Ich würde diese Zeichenfolgen einfach als Konstanten deklarieren, die nahe bei denen sind, wo sie verwendet werden, aber zusammen. Kümmern Sie sich nicht um eine neue Abstraktion wie Rollen, bis Sie wissen, dass Sie sie brauchen. Wenn die Anzahl der Rollen, die Sie vergleichen müssen, wächst oder außerhalb dieser Klasse benötigt wird, können Sie abhängig von der Komplexität des Vergleichs eine Rollenaufzählung oder eine Rollenklasse erstellen.

Durch die Verwendung von Konstanten signalisieren Sie dem Compiler auch die beabsichtigte Verwendung, so dass Sie geringfügige Vorteile bei der Speicherverwaltung erhalten, was im Allgemeinen eine gute Vorgehensweise ist, wenn Sie Ihren Vergleich in einer Schleife durchführen.

    
pfries 29.02.2012 16:05
quelle

Tags und Links