A menudo, especialmente en las bibliotecas, los paquetes contienen clases que se organizan en torno a un concepto único. Ejemplos: xml, sql, user, config, db . Creo que todos sentimos, naturalmente, que estos paquetes son correctos en singular .
com.myproject. xml .Element
com.myproject. sql .Connection
com.myproject. user .User
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. , ¿cuál es preferible?
com.myproject. tareas .TakeOutGarbageTask
com.myproject. tareas .DoTheDishesTask
com.myproject. tareas .PaintTheHouseTask
o
com.myproject. tarea .TakeOutGarbageTask
com.myproject. tarea .DoTheDishesTask
com.myproject. tarea .PaintTheHouseTask
fuente
Respuestas:
Use 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.
Un paquete, por otro lado, 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 (como a menudo lo son ), esperaría que el paquete contenga conceptos homogéneos.
Por ejemplo, se debe nombrar un tipo en
TaskCollection
lugar deTasksCollection
, ya que es una colección que contiene instancias de aTask
. Un paquete denominadocom.myproject.task
no significa que cada clase contenida sea una instancia de una tarea. Puede haber unTaskHandler
, unaTaskFactory
, etc. Un paquete llamadocom.myproject.tasks
, sin embargo, contendría diferentes tipos que son todas las tareas:TakeOutGarbageTask
,DoTheDishesTask
, etc.fuente
beans
es plural, sin embargo,java.beans
contiene todas las clases de tipo relacionadas con JavaBeans.java.beans
.Esto probablemente depende de un idioma específico. En .NET (C #) definitivamente debería ser un plural si es probable una colisión de nombres de tipo de espacio de nombres (el
type name expected but namespace found
error). He tratado con esto, no es agradable y da como resultado nombres de tipo sobrecalificados en todo el código. Ejemplo .fuente