Os nomes dos pacotes devem ser singulares ou plurais?

202

Geralmente, em bibliotecas, os pacotes contêm classes organizadas em torno de um único conceito. Exemplos: xml, sql, usuário, configuração, db . Acho que todos nós nos sentimos muito naturalmente que esses pacotes estão corretos no singular .

com.myproject.xml.Element
com.myproject.sql.Connection
com.myproject.user.User
com.myproject.user.UserFactory

No entanto, se eu tiver um pacote que realmente contenha uma coleção de implementações de um único tipo - como tarefas, regras, manipuladores, modelos, etc. , é preferível?

com.myproject.tasks.TakeOutGarbageTask
com.myproject.tasks.DoTheDishesTask
com.myproject.tasks.PaintTheHouseTask

ou

com.myproject.task.TakeOutGarbageTask
com.myproject.task.DoTheDishesTask
com.myproject.task.PaintTheHouseTask

    
por Nicole 12.05.2011 / 20:28
fonte

2 respostas

260

Use o plural para pacotes com conteúdo homogêneo e o singular para pacotes com conteúdo heterogêneo.

Uma classe é semelhante a uma relação de banco de dados. Uma relação de banco de dados deve ser nomeada no singular, pois seus registros são considerados instâncias da relação. A função de uma relação é compor um registro complexo a partir de dados simples.

Um pacote, por outro lado, não é uma abstração de dados. Ele auxilia na organização do código e na resolução de conflitos de nomenclatura. Se um pacote é nomeado no singular, isso não significa que cada membro do pacote é uma instância do pacote; contém conceitos relacionados, mas heterogêneos. Se for nomeado no plural (como eles muitas vezes < href="http://msdn.microsoft.com/en-us/library/system.collections.aspx"> são ), eu esperaria que o pacote contenha conceitos homogêneos.

Por exemplo, um tipo deve ser denominado TaskCollection em vez de TasksCollection , pois é uma coleção que contém instâncias de Task . Um pacote chamado com.myproject.task não significa que cada classe contida seja uma instância de uma tarefa. Pode haver um TaskHandler , um TaskFactory , etc. Um pacote chamado com.myproject.tasks , no entanto, conteria tipos diferentes que são todas as tarefas: TakeOutGarbageTask , DoTheDishesTask , etc.

    
por 12.05.2011 / 20:56
fonte
0

Isso provavelmente depende de um idioma específico. No .net (c #) definitivamente deve ser um plural se uma colisão de nome de tipo de namespace for provável (o erro type name expected but namespace found ). Eu lidei com isso, não é agradável e resulta em nomes de tipos com super qualificação em todo o código. Exemplo .

    
por 05.08.2016 / 13:19
fonte