Nomeação de classes: singular ou plural? [fechadas]

58

É sempre difícil para mim escolher entre formas singular e plural para nomes de classes:

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

E para nomes compostos é ainda mais difícil:

OrderCustomerRepository vs. OrderCustomersRepository vs. OrdersCustomersRepository

Qual abordagem você prefere e por quê?

SiberianGuy
fonte
A classe conteria um repositório para vários clientes? Se é um repositório para um cliente ...
Jeffo
2
@ Jeff O, repositório pode conter métodos GetCustomerById e GetCustomers ao mesmo tempo
SiberianGuy
2
Na modelagem de dados, um nome de tabela deve ser singular. Se seu aplicativo estiver usando classes de domínio que correspondem de 1 a 1 ao seu modelo de dados, pode ser uma boa ideia manter a nomeação singular. É claro que o mapeamento de classes para tabelas da maneira 1-1 pode não ser a melhor maneira de criar seu modelo de objeto para um aplicativo OO, mas isso não vem ao caso.
precisa saber é o seguinte

Respostas:

73

A única coisa que pluralizo são coleções.

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

Todos os seus exemplos são objetos individuais, portanto, não são pluralizados. Sim, os nomes se referem a objetos que podem ter várias instâncias, mas tudo o que você precisa saber no nome é a entidade do objeto (ou seja, cliente).

Assim, em todos os seus exemplos, o singular é a forma correta. Torna a vida muito mais fácil.

Robert Harvey
fonte
2
Eu usaria customerCollectionpara coleções, mas, pelo resto, concordo. Essa é uma prática recomendada no design de banco de dados e também funciona muito bem em código.
Jan_V
12
Não gosto de palavras como "Coleção" aqui. O inglês tem uma maneira perfeitamente boa de se referir a uma coleção de coisas, usando plurais.
Gort the Robot
Em vez de Collectionque tal Iterator?
Julian
@ Julian An Iteratorseria algum tipo de co-rotina, em vez de uma estrutura de dados para armazenar vários objetos, certo?
23418 Wilson
64

Use singular. A ferramenta para parafusar é chamada "chave de fenda" e não "chave de fenda".

No entanto, pluralize seus nomes de método e propriedade adequadamente, para indicar se um valor ou uma coleção deles será retornada.

back2dos
fonte
7

Definitivamente singular. Você não cria um objeto People, cria uma coleção de Personobjetos. A única vez que eu iria usar plurais seria para classes estáticas, ou seja SupportServices, StringUtils, etc. No entanto, neste caso, a classe age mais como um espaço de nomes do que qualquer outra coisa.

Roubar
fonte
11
E para pensar, todo esse tempo eu tenho usado as coleções da Peoples!
Jordan
2
Listar <pessoas> pessoas ... parece-me bem, @ Jordânia.
precisa saber é o seguinte
1

Lembre-se, uma classe é um modelo para um objeto. Então pense no objeto ao qual você está se referindo.

Frequentemente, é uma entidade singular, especialmente quando é uma entidade ORM. Às vezes, pode ser uma coleção.

Eu acredito que a resposta é específica ao contexto.

indi
fonte