Penamaan kelas: tunggal atau jamak? [Tutup]

58

Selalu sulit bagi saya untuk memilih antara bentuk tunggal dan jamak untuk nama kelas:

CustomerRepository vs. CustomersRepository
CustomerService vs. CustomersService
CustomerController vs. CustomersController

Dan untuk nama gabungan itu bahkan lebih sulit:

OrderCustomerRepository vs. OrderCustomersRepository vs OrdersCustomersRepository

Pendekatan apa yang Anda sukai dan mengapa?

SiberianGuy
sumber
Apakah kelas tersebut berisi repositori untuk banyak pelanggan? Jika satu repositori untuk satu pelanggan ...
JeffO
2
@Jeff O, repositori dapat berisi metode GetCustomerById dan GetCustomers secara bersamaan
SiberianGuy
2
Dalam Pemodelan Data, nama tabel harus tunggal. Jika aplikasi Anda menggunakan kelas domain yang sesuai dengan 1-1 untuk model data Anda, mungkin ide yang baik untuk mempertahankan penamaan tetap tunggal. Tentu saja memetakan kelas ke tabel dalam mode 1-1 mungkin bukan cara terbaik untuk membangun model objek Anda untuk aplikasi OO, tapi ini di samping pertanyaan.
NoChance

Jawaban:

73

Satu-satunya hal yang saya jamak adalah koleksi.

foreach (var customer in customers)
{
    // do something with customer
}

Semua contoh Anda adalah objek individual, sehingga tidak bersifat jamak. Ya, nama-nama merujuk pada objek yang mungkin memiliki beberapa kejadian, tetapi semua yang perlu Anda ketahui dalam nama adalah entitas objek (yaitu pelanggan).

Jadi dalam semua contoh Anda, bentuk tunggal adalah bentuk yang benar. Membuat hidup lebih mudah.

Robert Harvey
sumber
2
Saya akan menggunakan customerCollectionuntuk koleksi, tetapi untuk sisanya saya setuju. Ini adalah praktik terbaik dalam desain basis data dan bekerja dengan baik dalam kode juga.
Jan_V
12
Saya tidak suka kata-kata seperti "Koleksi" di sini. Bahasa Inggris memiliki cara yang sangat baik untuk merujuk pada koleksi barang, menggunakan bentuk jamak.
Gort the Robot
Alih-alih Collectionbagaimana Iterator?
Julian
@Julian An Iteratorakan menjadi semacam co-rutin daripada struktur data untuk memegang beberapa objek, bukan?
Wilson
64

Gunakan singular. Alat untuk memutar sekrup disebut "obeng" bukan "obeng".

Namun, pluralize metode dan nama properti Anda sesuai, untuk menunjukkan apakah satu nilai atau koleksi mereka akan dikembalikan.

back2dos
sumber
7

Sangat unik. Anda tidak membuat objek People, Anda membuat koleksi Personobjek. Satu-satunya waktu saya akan menggunakan bentuk jamak akan untuk kelas statis, yaitu SupportServices, StringUtils, dll Namun dalam kasus ini, kelas bertindak lebih sebagai namespace dari apa pun.

rampok
sumber
1
Dan untuk dipikirkan, selama ini saya telah menggunakan koleksi Peoples!
Jordan
2
Daftar orang <person> ... sepertinya baik-baik saja bagi saya, @ Jordan.
StevenV
1

Ingat, kelas adalah templat untuk objek. Jadi pikirkan tentang objek yang Anda maksud.

Seringkali itu adalah entitas tunggal, terutama ketika itu adalah entitas ORM. Terkadang bisa jadi koleksi.

Saya percaya jawabannya spesifik untuk konteksnya.

indi
sumber