Apa yang Anda sebut kelas tanpa metode?
Sebagai contoh,
class A
{
public string something;
public int a;
}
Di atas adalah kelas tanpa metode apa pun. Apakah jenis kelas ini memiliki nama khusus?
programming-languages
naming
data-structures
class
pengguna52343
sumber
sumber
Jawaban:
Sebagian besar waktu: Pola anti.
Mengapa? Karena memfasilitasi pemrograman prosedural dengan kelas "Operator" dan struktur data. Anda memisahkan data dan perilaku yang bukan OOP yang baik.
Sering kali: A DTO (Objek Transfer Data)
Baca hanya struktur data yang dimaksudkan untuk bertukar data, yang berasal dari objek bisnis / domain.
Terkadang: Hanya struktur data.
Yah kadang-kadang, Anda hanya perlu memiliki struktur untuk menyimpan data yang sederhana dan sederhana dan tidak memiliki operasi di atasnya. Tapi kemudian saya tidak akan menggunakan bidang publik tetapi accessor (getter dan setter).
sumber
Saya akan menyebutnya
struct
ataurecord
karena digunakan untuk penyimpanan data dan ini sangat umum untuk bahasa seperti yangC
Anda lihat di sana: struct (bahasa pemrograman C) . Jadi secara pribadi saya lebih suka menggunakanstruct
kelas daripada yang lebih cocok dan mudah dibaca:Biasanya mereka digunakan sebagai DTO (Data Transfer Object) sebagaimana dikatakan yang lain.
sumber
Ini dikenal sebagai Plain Old __ Objects (PO_Os) di mana yang kosong adalah Java atau C atau CIL, atau bahasa apa pun yang Anda gunakan.
Jika mereka digunakan sebagai blok data sederhana untuk komunikasi, maka mereka dapat dikenal sebagai Data Transfer Objects (DTOs).
Jika mereka mewakili beberapa data yang disediakan secara eksternal, mereka dapat dikenal sebagai Entitas .
sumber
Saya akan menyebut kelas semacam itu sebagai pemegang data yang bisa berubah, dan kadang-kadang menggunakan bentuk umum:
Perhatikan bahwa membungkus
dat
suatu properti akan menurunkan kinerja dan tidak menawarkan keuntungan, karena tidak ada yang dapat dilakukan oleh seorang pengakses properti (selain membaca / menulis bidang) yang tidak akan merusak beberapa implementasi. Lebih lanjut, mungkin diperlukan untuk menggunakanInterlocked
metode dengandat
(atau, jika itu adalah struct, dengan bidang-bidangnya), tetapi itu tidak akan mungkin jikadat
dibungkus dalam sebuah properti.Perhatikan bahwa sementara pemegang data yang bisa berubah mungkin berguna untuk tipe (bisa berubah atau tidak) yang perlu menyimpan data, mereka tidak dapat dengan aman digunakan untuk pertukaran data dengan cara yang sama seperti tipe yang tidak bisa diubah. Misalnya, pernyataan seperti:
akan memiliki makna yang jelas jika
GetData
mengembalikan tipe kelas yang tidak dapat diubah atau sebuah struct ("dapat diubah" atau tidak) yang tidak mengandung referensi ke data yang dapat diubah. Namun, jika mengembalikan objek kelas yang dapat diubah, tidak akan jelas apakah perubahan apa pun pada objek itu akan secara konsisten diabaikan oleh koleksi yang mendasarinya, secara konsisten menghasilkan pembaruan yang bersih untuknya, atau menyebabkan beberapa perilaku yang menjengkelkan atau tidak terduga yang tidak memenuhi deskripsi.Jika seseorang ingin memiliki koleksi pengembalian data dalam objek yang bisa berubah, paradigma yang benar sering kali akan seperti:
Menggunakan pendekatan itu, ada implikasi yang jelas yang
GetData
akan menyebabkanmyData
diisi dengan data dari koleksi, tetapimyCollection
tidak akan diharapkan untuk menyimpan referensi setelah fungsi selesai, juga tidak akan menggunakannya untuk tujuan lain.StoreData
juga akan menyalin informasimyData
ke struktur data internalnya sendiri tanpa menyimpan referensi. Perhatikan bahwa salah satu keuntungan dari pendekatan ini adalah bahwa jika kode klien akan membaca banyak item data dalam satu loop, itu dapat dengan aman membuat satu instance darimyData
luar loop, dan kemudian menggunakan kembali instance yang sama setiap saat. Demikian juga,myCollection
mungkin dapat menggunakan kembali objek instance yang terkait dengan kunci (menyalin data dari instance yang diteruskan) tanpa harus membuat instance baru.sumber
Bergantung pada konteksnya, saya menyebutnya Entitas. Pada aplikasi bisnis saya yang membosankan, mereka biasanya memetakan 1: 1 ke DER saya.
sumber
Saya akan menyebutnya a
Schema
.Ini mencakup banyak kegunaan seperti mewakili tabel database, atau catatan deserialised, atau DTO, dll
sumber