¿Los nombres de los paquetes deben ser singulares o plurales?

201

A menudo, especialmente en las bibliotecas, los paquetes contienen clases que se organizan en torno a un solo concepto. Ejemplos: xml, sql, user, config, db . Creo que todos sentimos que estos paquetes son correctos en el singular .

  

com.myproject. xml .Elemento
  com.myproject. sql .Connection
  com.myproject. usuario .Usuario
  com.myproject. usuario .UserFactory

Sin embargo, si tengo un paquete que realmente contiene una colección de implementaciones de un solo tipo , como tareas, reglas, controladores, modelos, etc. , que es preferible?

  

com.myproject. tareas .TakeOutGarbageTask
  com.myproject. tareas .DoTheDishesTask
  com.myproject. tareas .PaintTheHouseTask

o

  

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

    
pregunta Nicole 12.05.2011 - 20:28

2 respuestas

258

Utilice el plural para paquetes con contenido homogéneo y el singular para paquetes con contenido heterogéneo.

Una clase es similar a una relación de base de datos. Una relación de base de datos debe nombrarse en singular, ya que sus registros se consideran instancias de la relación. La función de una relación es componer un registro complejo a partir de datos simples.

Por otro lado, un paquete no es una abstracción de datos. Ayuda con la organización del código y la resolución de conflictos de nombres. Si un paquete se nombra en singular, no significa que cada miembro del paquete sea una instancia del paquete; Contiene conceptos relacionados pero heterogéneos. Si se nombra en plural (ya que a menudo < a href="http://msdn.microsoft.com/en-us/library/system.collections.aspx"> are ), espero que el paquete contenga conceptos homogéneos.

Por ejemplo, un tipo debe llamarse TaskCollection en lugar de TasksCollection , ya que es una colección que contiene instancias de Task . Un paquete llamado com.myproject.task no significa que cada clase contenida sea una instancia de una tarea. Puede haber un TaskHandler , un TaskFactory , etc. Un paquete llamado com.myproject.tasks , sin embargo, contendría diferentes tipos que son todas tareas: TakeOutGarbageTask , DoTheDishesTask , etc.

    
respondido por el Matthew Rodatus 12.05.2011 - 20:56
0

Esto probablemente depende de un idioma específico. En .NET (C #) definitivamente debería ser un plural si es probable que haya una colisión de nombres de tipo de espacio de nombres (el error type name expected but namespace found ). He lidiado con esto, no es agradable y resulta en nombres de tipo de sobre-calificación en todo el código. Ejemplo .

    
respondido por el Den 05.08.2016 - 13:19

Lea otras preguntas en las etiquetas