Denominazione delle classi: singolare o plurale? [chiuso]


58

È sempre difficile per me scegliere tra forme singolari e plurali per i nomi delle classi:

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

E per i nomi compositi è ancora più difficile:

OrderCustomerRepository vs. OrderCustomersRepository vs. OrdersCustomersRepository

Quale approccio preferisci e perché?


La classe conterrebbe un repository per più clienti? Se si tratta di un repository per un cliente ...
JeffO,

2
@Jeff O, il repository può contenere contemporaneamente i metodi GetCustomerById e GetCustomers
SiberianGuy

2
Nella modellazione dati, il nome di una tabella dovrebbe essere singolare. Se l'applicazione utilizza classi di dominio che corrispondono a 1-1 al modello di dati, potrebbe essere una buona idea mantenere la denominazione singolare. Naturalmente mappare le classi sulle tabelle in modo 1-1 potrebbe non essere il modo migliore per costruire il modello a oggetti per un'applicazione OO, ma questo è fuori questione.
NoChance,

Risposte:


73

L'unica cosa che plurale sono le raccolte.

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

Tutti i tuoi esempi sono singoli oggetti, quindi non sono pluralizzati. Sì, i nomi si riferiscono ad oggetti che potrebbero avere più istanze, ma tutto ciò che devi sapere nel nome è l'entità oggetto (cioè cliente).

Quindi in tutti i tuoi esempi, il singolare è la forma corretta. Semplifica la vita.


2
Userei customerCollectionper le collezioni, ma per il resto sono d'accordo. Questa è una best practice nella progettazione di database e funziona abbastanza bene anche nel codice.
Jan_V,

12
Non mi piacciono le parole come "Collezione" qui. L'inglese ha un ottimo modo di riferirsi a una raccolta di cose, usando i plurali.
Gort il robot,

Invece di Collectionche ne dici Iterator?
Giuliano

@Julian An Iteratorsarebbe una sorta di co-routine piuttosto che una struttura di dati per contenere più oggetti, giusto?
Wilson,

64

Usa singolare. Lo strumento con cui girare le viti si chiama "cacciavite" e non "cacciavite".

Tuttavia, pluralizzare i nomi dei metodi e delle proprietà di conseguenza, per indicare se verranno restituiti un valore o una loro raccolta.


7

Decisamente singolare. Non si crea un oggetto di People, si crea una raccolta di Personoggetti. L'unica volta che avrei usato il plurale sarebbe per classi statiche, cioè SupportServices, StringUtils, ecc, tuttavia, in questo caso, la classe si comporta più come uno spazio dei nomi di ogni altra cosa.


1
E pensare, per tutto questo tempo ho usato le collezioni Peoples!
Giordania,

2
Elenca <person> persone ... mi sembra ok, @Jordan.
StevenV,

1

Ricorda, una classe è un modello per un oggetto. Quindi pensa all'oggetto a cui ti riferisci.

Spesso è un'entità singolare, specialmente quando è un'entità ORM. A volte potrebbe essere una collezione.

Credo che la risposta sia specifica per il contesto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.