Wo ich arbeite, wird von der Verwendung von Eigenschaften abgeraten. Wir haben Tools zur Codegenerierung, um "Dinge zu beschleunigen". Alle Objektdaten sind öffentliche Felder. Wenn Sie trotzdem Eigenschaften anfordern, erhalten Sie ungefähr Folgendes:
Public sFoo as String
Public Property Foo as String
Get
Return sFoo
End Get
Set(ByVal value as String)
sFoo = value
End Set
End Property
Ich kann mir kein vernünftiges Argument dafür vorstellen. Gibt es gute Gründe, sowohl ein öffentliches Eigentum als auch ein öffentliches Feld zu nutzen?
object-oriented
.net
Daniel
quelle
quelle
Antworten:
Nein.
Dafür gibt es keinen guten Grund. Es:
Verwenden Sie stattdessen automatisch implementierte Eigenschaften .
quelle
Eines der grundlegenden objektorientierten Prinzipien heißt Encapsulation. Es heißt, dass jedes Objekt seine Daten vor Änderungen von außen schützen sollte.
Dies geschieht, indem alle Felder privat gemacht werden und wenn möglich auch alle Eigenschaftssetter privat gemacht werden. Stattdessen müssen Sie Verhalten einführen, indem Sie Methoden hinzufügen, mit denen der Status geändert wird.
Was Sie tun, ist sehr falsch. Im Wesentlichen handelt es sich nur um funktionale Programmierung, bei der alle Klassen nur Datencontainer oder eine Möglichkeit zur Gruppierung von Methoden sind. Ersteres ist ein Anti-Muster namens Anemic Domain Model .
Das Problem dabei ist, dass die Geschäftslogik für jedes Domänenmodell auf mehrere Stellen in Ihrer Anwendung verteilt ist (dh auf jede Stelle, an der das Objekt geändert wird). Daher ist es schwierig, Fehler im Zusammenhang mit Ihren Geschäftsregeln zu finden, da Sie jeden Ort analysieren müssen, an dem das Objekt verwendet wird, anstatt nur das Objekt selbst zu analysieren.
Ich habe darüber hier gebloggt : http://blog.gauffin.org/2012/06/protect-your-data/
quelle
Kurzum: Nein , dafür gibt es keine Rechtfertigung. Die öffentlichen Immobilien haben mehr geschäftliche Nutzungen als öffentliche Felder.
Einige der vielen Verwendungszwecke von Eigenschaften sind:
Wie bereits vorgeschlagen, ist die Verwendung von Auto-Eigenschaften eine weitere clevere Methode.
Weitere Details finden Sie in den Eigenschaften von MSDN - VB.NET
quelle