Nazwy klas: pojedyncza czy mnoga? [Zamknięte]


58

Zawsze trudno mi wybierać formy w liczbie pojedynczej i mnogiej dla nazw klas:

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

A w przypadku nazw złożonych jest to jeszcze trudniejsze:

OrderCustomerRepository vs. OrderCustomersRepository vs. OrdersCustomersRepository

Jakie podejście preferujesz i dlaczego?


Czy klasa zawiera repozytorium dla wielu klientów? Jeśli jest to jedno repozytorium dla jednego klienta ...
JeffO

2
@Jeff O, repozytorium może zawierać jednocześnie metody GetCustomerById i GetCustomers
SiberianGuy

2
W modelowaniu danych nazwa tabeli powinna być pojedyncza. Jeśli Twoja aplikacja korzysta z klas domen, które odpowiadają 1-1 Twojemu modelowi danych, dobrym pomysłem może być zachowanie pojedynczej nazwy. Oczywiście odwzorowywanie klas na tabele w stylu 1-1 może nie być najlepszym sposobem na zbudowanie modelu obiektowego dla aplikacji OO, ale to jest pytanie.
NoChance,

Odpowiedzi:


73

Jedyne, co pluralizuję, to kolekcje.

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

Wszystkie twoje przykłady są pojedynczymi obiektami, więc nie są pluralizowane. Tak, nazwy odnoszą się do obiektów, które mogą mieć wiele instancji, ale wszystko, co musisz wiedzieć w nazwie, to obiekt obiektowy (tj. Klient).

Tak więc we wszystkich twoich przykładach liczba pojedyncza jest poprawna. Ułatwia życie.


2
Używałbym customerCollectiondo kolekcji, ale do końca zgadzam się. Jest to najlepsza praktyka w projektowaniu baz danych i działa również całkiem dobrze w kodzie.
Jan_V

12
Nie lubię tutaj słów takich jak „kolekcja”. Angielski ma doskonały sposób odwoływania się do zbioru rzeczy przy użyciu liczby mnogiej.
Gort the Robot

Zamiast Collectiontego Iterator?
Julian

@Julian An Iteratorbyłby rodzajem wspólnej procedury zamiast struktury danych do przechowywania wielu obiektów, prawda?
Wilson

64

Użyj liczby pojedynczej. Narzędzie do obracania śrub nazywane jest „śrubokrętem”, a nie „śrubokrętem”.

Jednak odpowiednio zwiększ liczbę metod i nazw właściwości, aby wskazać, czy zostanie zwrócona jedna wartość, czy ich zbiór.


7

Zdecydowanie pojedyncza. Nie tworzysz obiektu People, tworzysz kolekcję Personobiektów. Czas tylko chciałbym użyć liczby mnogiej byłaby dla klas statycznych, tj SupportServices, StringUtilsitp Jednak w tym przypadku klasa działa bardziej jako nazw niż cokolwiek innego.


1
I pomyśleć, przez cały ten czas korzystałem z kolekcji Peoples!
Jordan

2
Lista <osobowa> osób ... wydaje mi się w porządku, @Jordan.
StevenV

1

Pamiętaj, klasa jest szablonem dla obiektu. Pomyśl więc o obiekcie, którego dotyczysz.

Często jest to pojedyncza jednostka, szczególnie gdy jest to jednostka ORM. Czasami może to być kolekcja.

Uważam, że odpowiedź jest specyficzna dla kontekstu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.