2016-06-23 12 views
-1

Soll ich lieber eine öffentliche statische Klasse erstellen oder interne Konstanten verwenden? Ich arbeite an einer sehr großen Anwendung und bemerkte die Verwendung von const string bei zahlreichen places.This wird verwendet, um den Benutzer Auswahlpublic static class oder const

const string Thatch = "Thatch"; 
const string BrickAndTimberFrame= "Brick And Timber Frame"; 
const string OtherRoof = "Other"; 
etc...... 
etc...... 

vergleichen Was soll ich tun, um zu eher öffentlicher statischer Klasse in dem Core erstellen Anwendung (siehe Code unten). Der Grund dafür ist, dass ich nur an einer Stelle einen Wert ändern/hinzufügen muss.

public static class RoofConstruction 
{ 
    public static String Thatch{ get { return "Thatch"; } } 
    public static String BrickAndTimberFrame { get { return "Brick And Timber Frame"; } } 
    etc.... 
    etc.... 
} 

Die Vergleichsfunktion wird dann so aussehen

internal bool SlateTileOrConcreteRoof() 
     { 
      return RiskInformation.RoofConstruction.Value == RoofConstruction.Slate || 
        RiskInformation.RoofConstruction == RoofConstruction.TileAndSlate || 
        RiskInformation.RoofConstruction == RoofConstruction.Concrete; 
     } 

fügen Sie Kommentare/Verbesserungen etc

+0

Bessere Konstanten in einer Konfigurationsdatei verwenden –

Antwort

0

Generell denke ich, dass “ das bestimmende Merkmal von ‘ eine gute Klasse ™ ’ ” ist das “ es tut das Richtige, nevermind (!) ‘ wie, genau, ” es tut es. ”

Wenn Sie Konstanten exportieren aus der Klasse, legt dies nahe, dass eine unbekannte Zahl von anderen Abschnitten der Anwendung (Gegenwart und Zukunft ...) Logik enthält, die gegen diese Zeichenfolge prüft.

Daher ist die Frage, die nur Sie wirklich beantworten:   “ Sie wirklich über ‘ den Wert dieser Zeichenfolge sie kümmern, ’ oder wollen sie ‘ die Antwort auf eine Ja-oder-Nein-Frage, die beantwortet wird Teil basierend auf dem Wert dieser Zeichenfolge? ’ ”   Dies könnte Ihre Entscheidung darüber leiten, was am besten zu tun ist. (Wohlgemerkt, ich glaube nicht, dass es eine Art Helllinienregel gibt.   Ich habe es in beide Richtungen gemacht ...)

Verwandte Themen