web-dev-qa-db-fra.com

Dénomination des classes: singulière ou plurielle?

Il m'est toujours difficile de choisir entre des formes singulières et plurielles pour les noms de classes:

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

Et pour les noms composites, c'est encore plus difficile:

OrderCustomerRepository vs OrderCustomersRepository vs. OrdersCustomersRepository

Quelle approche préférez-vous et pourquoi?

66
SiberianGuy

La seule chose que je pluralise, ce sont les collections.

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

Tous vos exemples sont des objets individuels, ils ne sont donc pas pluralisés. Oui, les noms font référence à des objets qui peuvent avoir plusieurs instances, mais tout ce que vous devez savoir dans le nom est l'entité objet (c'est-à-dire le client).

Donc, dans tous vos exemples, le singulier est la forme correcte. Rend la vie beaucoup plus facile.

76
Robert Harvey

Utilisez au singulier. L'outil pour tourner les vis est appelé "tournevis" et non "tournevis".

Cependant, pluralisez vos noms de méthode et de propriété en conséquence, pour indiquer si une valeur ou une collection d'entre eux sera retournée.

69
back2dos

Certainement singulier. Vous ne créez pas d'objet People, vous créez une collection d'objets Person. La seule fois où j'utiliserais des pluriels serait pour des classes statiques, c'est-à-dire SupportServices, StringUtils, etc. Cependant, dans ce cas, la classe agit plus comme un espace de noms qu'autre chose.

8
Rob

N'oubliez pas qu'une classe est un modèle pour un objet. Pensez donc à l'objet auquel vous faites référence.

Il s'agit souvent d'une entité singulière, en particulier lorsqu'il s'agit d'une entité ORM. Parfois, il peut s'agir d'une collection.

Je pense que la réponse est spécifique au contexte.

2
indi