¿Cuál es la convención para el separador de palabras en los nombres de paquetes de Java?
¿Cómo se deben separar las palabras en los nombres de los paquetes? ¿Cuales de las siguientes son correctas?
com.stackoverflow.my_package
(Snake Case
usando guión bajo)com.stackoverflow.my-package
(Kebab Case
usando guiones)com.stackoverflow.myPackage
(Camel Case
)com.stackoverflow.MyPackage
(Pascal Case
)
¿Cuál es el estándar general?
Los tres no son las convenciones.
Usar com.stackoverflow.mypackage
.
Los nombres de los paquetes no siguen la convención de nomenclatura de paquetes en mayúsculas, guiones bajos o guiones .
Además, la Guía de estilo de Google Java especifica exactamente la misma com.stackoverflow.mypackage
convención (es decir):
5.2.1 Nombres de paquetes
Los nombres de los paquetes están todos en minúsculas, con palabras consecutivas simplemente concatenadas (sin guiones bajos). Por ejemplo
com.example.deepspace
, nocom.example.deepSpace
ocom.example.deep_space
.— Guía de estilo de Google Java: 5.2 Reglas por tipo de identificador: 5.2.1 Nombres de paquetes .
Esto es lo que prescribe el documento oficial de convenciones de nomenclatura:
Paquetes
El prefijo de un nombre de paquete único siempre está escrito en letras ASCII en minúsculas y debe ser uno de los nombres de dominio de nivel superior, actualmente
com
,edu
,gov
,mil
,net
,org
o uno de los códigos de dos letras en inglés que identifican los países como se especifica en ISO. Norma 3166, 1981.Los componentes posteriores del nombre del paquete varían según las convenciones de nomenclatura internas de una organización. Dichas convenciones pueden especificar que ciertos componentes del nombre del directorio sean nombres de división, departamento, proyecto, máquina o inicio de sesión.
Ejemplos
com.sun.eng
com.apple.quicktime.v2
edu.cmu.cs.bovik.cheese
Referencias
- java.sun.com - Convenciones de código/Nombres
Tenga en cuenta que, en particular, todo lo que sigue al prefijo de dominio de nivel superior no se especifica en el documento anterior. El JLS también está de acuerdo con esto y da los siguientes ejemplos:
com.sun.sunsoft.DOE
gov.whitehouse.socks.mousefinder
com.JavaSoft.jag.Oak
org.npr.pledge.driver
uk.ac.city.rugby.game
También es relevante el siguiente extracto:
En algunos casos, es posible que el nombre de dominio de Internet no sea un nombre de paquete válido. A continuación se sugieren algunas convenciones para abordar estas situaciones:
- Si el nombre de dominio contiene un guión o cualquier otro carácter especial no permitido en un identificador, conviértalo en un guión bajo.
- Si alguno de los componentes del nombre del paquete resultante son palabras clave, añádales un guión bajo.
- Si alguno de los componentes del nombre del paquete resultante comienza con un dígito o cualquier otro carácter que no esté permitido como carácter inicial de un identificador, coloque un guión bajo como prefijo del componente.
Referencias
- Nombres de paquetes JLS 6.1
Cualquiera puede usar guión bajo _ (está bien)
Nadie debería usar hypen ( es una mala práctica)
Nadie debería usar letras mayúsculas dentro de los nombres de los paquetes (mala práctica)
NOTA: Aquí, "Mala práctica" significa que técnicamente se le permite usar eso, pero convencionalmente no es de buena educación escribirlo.
Fuente: Nombrar un paquete (docs.oracle)