Co nazywacie klasami bez metod?
Na przykład,
class A
{
public string something;
public int a;
}
Powyżej jest klasa bez żadnych metod. Czy ten typ klasy ma specjalną nazwę?
programming-languages
naming
data-structures
class
użytkownik52343
źródło
źródło
Odpowiedzi:
Przez większość czasu: anty-wzór.
Dlaczego? Ponieważ ułatwia programowanie proceduralne za pomocą klas i struktur danych „Operator”. Oddzielasz dane i zachowania, które nie są do końca dobrym OOP.
Często: A DTO (Data Transfer Object)
Struktury danych tylko do odczytu przeznaczone do wymiany danych, pochodzące z obiektu biznesowego / domeny.
Czasami: po prostu struktura danych.
Czasami trzeba mieć takie struktury do przechowywania danych, które są proste i proste i nie można na nich operować. Ale wtedy nie używałbym pól publicznych, ale akcesoriów (getterów i seterów).
źródło
Nazwałbym to
struct
lubrecord
ponieważ jest on używany do przechowywania danych i jest to bardzo powszechne w takich językach, jakC
można tam zobaczyć: struct (język programowania C) . Więc osobiście wolałbym użyćstruct
zamiast klasy, która jest bardziej odpowiednia i czytelna:Zazwyczaj są one używane jako DTO (Data Transfer Object), jak powiedzieli inni.
źródło
Są one znane jako Plain Old __ Objects (PO_Os), gdzie puste to Java, C lub CIL, lub inny używany język.
Jeśli są one używane jako proste bloki danych do komunikacji, można je nazwać obiektami przesyłania danych (DTO).
Jeśli reprezentują niektóre dane dostarczone zewnętrznie, mogą być znane jako Encje .
źródło
Nazwałbym taką klasę zmiennym posiadaczem danych i czasami użyłem formy ogólnej:
Zauważ, że zawijanie
dat
w obrębie właściwości obniży wydajność i nie przyniesie żadnych korzyści, ponieważ dostęp do właściwości nie może zrobić (poza odczytem / zapisem pola), co nie złamałoby niektórych implementacji. Ponadto może być konieczne użycieInterlocked
metod zdat
(lub, jeśli jest to struct, z ich polami), ale nie byłoby to możliwe, gdybydat
zostały opakowane we właściwość.Należy zauważyć, że chociaż zmienne uchwyty danych mogą być przydatne dla typów (zmiennych lub nie), które muszą przechowywać dane, nie można ich bezpiecznie używać do wymiany danych w taki sam sposób, jak w przypadku typów niezmiennych. Na przykład zdanie takie jak:
miałoby jasne znaczenie, gdyby
GetData
zwrócił niezmienny typ klasy lub strukturę („zmienną” lub nie), która nie zawierała odwołań do zmiennych danych. Jeśli jednak zwróci zmienny obiekt klasy, nie będzie jasne, czy jakiekolwiek zmiany w tym obiekcie będą konsekwentnie ignorowane przez kolekcję podstawową, konsekwentnie skutkują czystymi aktualizacjami tego obiektu, czy też spowodują jakieś nieprzyjemne lub nieprzewidywalne zachowanie niespełniające żadnego opisu.Jeśli ktoś chciałby mieć kolekcję zwracającą dane w zmiennym obiekcie, poprawny paradygmat często byłby podobny do:
Stosując to podejście, istnieje wyraźna implikacja, która
GetData
spowoduje, że zostanąmyData
wypełnione danymi z kolekcji, alemyCollection
nie oczekuje się , że będzie zawierać odniesienie do niej po zakończeniu funkcji, ani nie będzie używać jej w żadnym innym celu.StoreData
podobnie kopiowałby informacjemyData
do swojej wewnętrznej struktury danych bez zachowania odniesienia. Należy zauważyć, że jedną z zalet tego podejścia jest to, że jeśli kod klienta będzie odczytywał wiele elementów danych w pętli, może bezpiecznie utworzyć jedno wystąpieniemyData
poza pętlą, a następnie użyć tego samego wystąpienia za każdym razem. PodobniemyCollection
może być w stanie ponownie użyć instancji obiektu powiązanej z kluczem (kopiowanie danych z przekazanej instancji) bez konieczności tworzenia nowej instancji.źródło
W zależności od kontekstu nazywam je bytami. W moich nudnych aplikacjach biznesowych zwykle mapują one 1: 1 do mojego DER.
źródło
Nazwałbym to
Schema
.Obejmuje to wiele zastosowań, takich jak reprezentowanie tabeli bazy danych, zdezrializowanego rekordu lub DTO itp
źródło