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?

SiberianGuy
źródło
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.

Robert Harvey
źródło
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.

back2dos
źródło
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.

Obrabować
źródło
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.

ind
źródło