Sınıflandırma isimleri: tekil mi, çoğul mu? [kapalı]


58

Sınıf isimleri için tekil ve çoğul formlar arasında seçim yapmak her zaman zor

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

Ve bileşik isimler için daha da zor:

SiparişMüşteri siparişiMüşteri siparişiMüşteri siparişiMüşteri siparişiMüşteri siparişi

Hangi yaklaşımı tercih edersiniz ve neden?


Sınıfta birden fazla müşteri için bir havuz var mı? Bir müşteri için bir depo ise ...
JeffO

2
@Jeff O, depo aynı anda GetCustomerById ve GetCustomers yöntemlerini içerebilir
SiberianGuy

2
Veri Modelleme'de, bir tablo adı tekil olmalıdır. Uygulamanız veri modelinize 1-1 karşılık gelen etki alanı sınıfları kullanıyorsa, adlandırmayı tekil tutmak iyi bir fikir olabilir. Tabii ki sınıfları 1-1 moda göre tablolara eşlemek, bir OO uygulaması için nesne modelinizi oluşturmanın en iyi yolu olmayabilir, ama bu sorunun yanında.
NoChance

Yanıtlar:


73

Çoğullaştırdığım tek şey koleksiyonlar.

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

Tüm örnekleriniz bireysel nesnelerdir, bu nedenle çoğullaştırılmazlar. Evet, adlar birden fazla örneği olabilecek nesnelere atıfta bulunur, ancak adda bilmeniz gereken tek şey nesne varlığıdır (yani müşteri).

Yani tüm örneklerinde, tekil doğru biçimdir. Hayatı çok kolaylaştırıyor.


2
customerCollectionKoleksiyon için kullanırdım ama geri kalanı için aynı fikirdeyim. Bu veritabanı tasarımında en iyi uygulamadır ve kodda da oldukça iyi çalışıyor.
Jan_V

12
Burada "Koleksiyon" gibi kelimelerden hoşlanmıyorum. İngilizce, çoğulları kullanarak, bir şeyler topluluğuna gönderme yapmanın mükemmel bir yoludur.
Robot'a

CollectionNasıl yerine Iterator?
Julian,

@Julian An Iterator, birden fazla nesneyi tutmak için bir veri yapısından ziyade bir tür ortak rutin olur, değil mi?
Wilson,

64

Tekil kullanın. Vidaları döndürmek için kullanılan alete "vida sürücüsü" değil "vida sürücüsü" adı verilir.

Ancak, bir değerin veya koleksiyonun iade edilip edilmeyeceğini belirtmek için yönteminizi ve özellik adlarınızı uygun şekilde çoğaltın.


7

Kesinlikle tekil. Bir nesne yaratmazsınız, bir nesne Peoplekoleksiyonu Personyaratırsınız. Ben çoğul kullanmak istiyorsunuz sadece zaman statik sınıflar, yani olurdu SupportServices, StringUtilsvb Ancak bu durumda, sınıf şeyden bir ad olarak daha davranır.


1
Ve düşünmek, bu kadar zaman boyunca insanların koleksiyonlarını kullandım!
Ürdün

2
<Kişi> insanlar listesi ... bana göre görünüyor, @Jordan.
StevenV

1

Unutmayın, sınıf bir nesne için bir şablondur. Yani atıfta bulunduğunuz nesneyi düşünün.

Genellikle tekil bir varlıktır, özellikle de bir ORM varlığı olduğunda. Bazen bir koleksiyon olabilir.

Cevabın içeriğe özel olduğuna inanıyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.