Wie nennt man Klassen ohne Methoden?
Zum Beispiel,
class A
{
public string something;
public int a;
}
Oben ist eine Klasse ohne Methoden. Hat diese Art von Klasse einen speziellen Namen?
programming-languages
naming
data-structures
class
user52343
quelle
quelle
Antworten:
Meistens: Ein Anti-Muster.
Warum? Weil es die prozedurale Programmierung mit "Operator" -Klassen und Datenstrukturen erleichtert. Sie trennen Daten und Verhalten, was nicht gerade gut ist.
Oft: Ein DTO (Data Transfer Object)
Schreibgeschützte Datenstrukturen zum Datenaustausch, die von einem Geschäfts- / Domänenobjekt abgeleitet wurden.
Manchmal: Nur Datenstruktur.
Nun, manchmal muss man nur diese Strukturen haben, um Daten zu speichern, die schlicht und einfach sind und keine Operationen haben. Aber dann würde ich keine öffentlichen Felder verwenden, sondern Accessoren (Getter und Setter).
quelle
Ich würde es nennen
struct
oderrecord
weil es zur Datenspeicherung verwendet wird und dies sehr häufig in Sprachen vorkommt, wieC
Sie dort sehen können: struct (Programmiersprache C) . Ich persönlich würde es vorziehen, einestruct
Klasse anstelle einer Klasse zu verwenden, die besser geeignet und lesbar ist:Normalerweise werden sie wie die anderen als DTOs (Data Transfer Object) verwendet .
quelle
Diese werden als einfache alte __ Objekte (PO_Os) bezeichnet, bei denen das Leerzeichen Java oder C oder CIL oder eine von Ihnen verwendete Sprache ist.
Wenn sie als einfache Datenblöcke für die Kommunikation verwendet werden, können sie als Datenübertragungsobjekte ( Data Transfer Objects, DTOs) bezeichnet werden.
Wenn sie einige extern bereitgestellte Daten darstellen, können sie als Entitäten bezeichnet werden .
quelle
Ich würde eine solche Klasse als veränderlichen Datenhalter bezeichnen und habe manchmal eine generische Form verwendet:
Beachten Sie, dass das Umschließen
dat
einer Eigenschaft die Leistung beeinträchtigt und keinen Vorteil bietet, da ein Eigenschaften-Accessor nichts anderes tun kann (als das Feld zu lesen / schreiben), was einige Implementierungen nicht beschädigen würde. Außerdem kann es erforderlich sein,Interlocked
Methoden mitdat
(oder, wenn es sich um eine Struktur handelt, mit Feldern davon) zu verwenden, aber das wäre nicht möglich, wenndat
sie in eine Eigenschaft eingeschlossen wären .Beachten Sie, dass veränderbare Dateninhaber zwar für Typen (veränderlich oder nicht veränderbar) nützlich sein können, die Daten enthalten müssen, sie jedoch nicht sicher für den Datenaustausch verwendet werden können, wie dies bei unveränderlichen Typen der Fall wäre. Zum Beispiel eine Aussage wie:
hätte eine klare Bedeutung, wenn
GetData
ein unveränderlicher Klassentyp oder eine Struktur ("veränderlich" oder nicht) zurückgegeben würde, die keine Verweise auf veränderbare Daten enthält. Wenn ein veränderbares Klassenobjekt zurückgegeben wird, ist jedoch unklar, ob Änderungen an diesem Objekt von der zugrunde liegenden Auflistung konsistent ignoriert werden, konsistent zu sauberen Aktualisierungen führen oder ein lästiges oder unvorhersehbares Verhalten verursachen, das keiner der beiden Beschreibungen entspricht.Wenn man möchte, dass eine Sammlung Daten in einem veränderlichen Objekt zurückgibt, ist das richtige Paradigma oft so etwas wie:
Bei Verwendung dieses Ansatzes gibt es eine eindeutige Implikation,
GetData
die dazu führtmyData
, dass Daten aus der Sammlung gefüllt werden, von denen jedochmyCollection
nicht erwartet wird, dass sie nach Abschluss der Funktion einen Verweis darauf enthalten, und dass sie auch nicht für andere Zwecke verwendet werden.StoreData
würde ebenfalls InformationenmyData
in seine eigene interne Datenstruktur kopieren , ohne eine Referenz zu behalten. Beachten Sie, dass ein Vorteil dieses Ansatzes darin besteht, dass der Clientcode, wenn er viele Datenelemente innerhalb einer Schleife liest, sicher eine InstanzmyData
außerhalb der Schleife erstellen und diese Instanz dann jedes Mal wiederverwenden kann. Ebenso kannmyCollection
möglicherweise die dem Schlüssel zugeordnete Objektinstanz wiederverwendet werden (Kopieren von Daten aus der übergebenen Instanz), ohne dass eine neue Instanz erstellt werden muss.quelle
Je nach Kontext nenne ich sie Entitäten. In meinen langweiligen Geschäftsanwendungen ordnen sie meinem DER normalerweise 1: 1 zu.
quelle
Ich würde es a nennen
Schema
.Dies umfasst mehrere Verwendungszwecke, z. B. die Darstellung einer Datenbanktabelle oder eines deserialisierten Datensatzes oder eines DTO usw.
quelle