In der Praxis bedeutet dies, einen benutzerdefinierten (unveränderlichen) class
über einen string
oder einen anderen primitiven Typ zu verwenden.
Beispiele:
- Veröffentlichung: International Standard Book Number.
- Finanzen: Internationale Wertpapieridentifikationsnummer.
Vorteile:
- Kann das Format eines Bezeichners sicherstellen.
- Wird ein erstklassiges Mitglied des Modells.
Nachteile:
- Fügt Persistenzreibung hinzu (z. B. Entity Framework).
- Mehr Code.
Antworten:
Wenn Sie der Klasse genügend nützliche Funktionen geben können, um die zusätzliche Komplexität zu rechtfertigen, keine Zeichenfolge zu sein, tun Sie dies. Ich vermute, dass dies bei Kennungen wie ISBN und ISIN nicht der Fall ist.
Damit eine Bezeichnerklasse nützlich ist, würde ich erwarten, dass sie ungefähr so aussieht:
Wenn es stattdessen eher so aussieht:
Dann würde ich die Klasse komplett fallen lassen, überall reguläre Zeichenfolgen verwenden und sicherstellen, dass ich in allen relevanten Variablennamen konsistent "isin" verwende.
Beachten Sie, dass das Hinzufügen eines neuen Typs in einigen Sprachen in typischen Programmen fast keine "zusätzliche Komplexität" aufweist. In diesem Fall sollten Sie den neuen Typ erstellen, auch wenn er überhaupt keine Funktionalität hat. Dies ist jedoch bei den meisten traditionellen OOP-Sprachen wie C ++ nicht der Fall.
quelle
Ich würde sagen, mach mit. Ich würde argumentieren, dass die Vorteile in diesem Fall die Nachteile überwiegen. Der zusätzliche Code ist wahrscheinlich ziemlich gering und das Persistenzproblem kann ziemlich einfach gelöst werden, indem eine Art Konverter zwischen Ihrer neuen Klasse und dem Typ bereitgestellt wird, den die Datenbank erwartet (ich habe Entity Framework noch nie verwendet, aber ich weiß, dass dies relativ schmerzlos ist Überwintern).
Einer der Vorteile, die Sie durch das Definieren Ihrer eigenen Klasse erhalten können, besteht darin, dass der Compiler sicherstellen kann, dass alle Methoden, die eine ISBN oder eine ISIN wünschen, zur Kompilierungszeit wissen , ob Sie versuchen, den falschen Wert zu übergeben. Es wird auch viel schwieriger sein, dieses Feld in Ihrer Entität versehentlich zu überschreiben. Wir können solche häufigen Fehler vollständig vermeiden:
Wenn ISBN eher eine Klasse als ein primitiver Typ ist, wird der obige Code nicht einmal kompiliert, was später viel Debugging-Zeit spart.
quelle