2010-09-09 6 views
31

Supongamos que está trabajando en el módulo principal del proyecto foo para BarBaz Incorporated. Su fragmento de código podría tener este aspecto:Nombre de la compañía con guiones en los paquetes de Java

package com.barbaz.foo.core; 

import com.barbaz.foo.util; 

¿Cómo sería la convención sea si el sitio Web de su empresa no era barbaz.com, pero en lugar bar-baz.com?

+0

Por lo tanto, resulta que hay una pequeña cantidad de Java pasando al otro lado del edificio, aunque no he encontrado esto hasta después le pregunté a la pregunta. Su enfoque, siguiendo el formato de este ejemplo, fue 'com.bb.foo. *;', Que tiene sentido considerando que todos los sistemas legados son bbs, bbw, bbj, bbl y lo que no. ¡Gracias por la entrada! – corsiKa

Respuesta

47

El Java Language Spec da una convención sugerido:

Si el nombre de dominio contiene un guión, o de cualquier otro carácter especial no permitido en un identificador (§3.8), convertirlo en un guión bajo.

Pero es sólo una sugerencia ...

+11

Eso es interesante, considerando cómo la mayoría de las sugerencias de Java recomiendan contra el uso de guiones bajos en la mayoría de los identificadores. – corsiKa

7

Simplemente suelte el guión. El nombre del paquete no necesita coincidir con el nombre del sitio web. Es más importante que haya coherencia entre los paquetes producidos por la compañía, de modo que todos utilicen el mismo nombre de paquete base.

+0

También se usa para evitar colisiones de espacios de nombres en bibliotecas. Si barbaz.com creó un producto usando una biblioteca de bar-baz.com (quien dejó caer su guión) posiblemente habría conflictos. En la práctica esto es tan poco probable como para ser risible. –

+11

Si barbaz.com y bar-baz.com producían bibliotecas, una de ellas estaría demandando a la otra. –

+0

Tras una consideración más detenida, tuve que dar la casilla a la sugerencia de Steve. Echa un vistazo a los enlaces en mi comentario sobre la respuesta de Jon Skeet de por qué. – corsiKa

13

Yo simplemente eliminaría el guión. Usted podría cambiarlo por un guión bajo, pero se vería muy feo.

Es muy poco probable que realmente vaya a chocar con otra compañía con el mismo nombre menos los guiones. Incluso si ambas compañías son compañías tecnológicas, ambas usando Java, ¿cuáles son las posibilidades de que alguien use códigos creados por ambos en la misma base de código?

Para ser sincero, me gustaría que Java no hubiera seguido este camino en términos de convenciones. Me pregunto cuántos directorios llamados "com" u "org" existen con un único miembro, un subdirectorio con un nombre más significativo.

+0

Así que me encontré con esto el otro día otra vez (en realidad ya no estoy en el mismo lugar) y me encontré con un [tutorial de Oracle con una práctica tabla en la parte inferior] (http://docs.oracle.com/javase /tutorial/java/package/namingpkgs.html). De acuerdo con el camino de regreso a la máquina, [ha existido desde finales de 2011] (http://web.archive.org/web/20111117054510/http://docs.oracle.com/javase/tutorial/java/package/namingpkgs. html), un año después de esta pregunta.Las recomendaciones al final seguro me hacen preguntarme! – corsiKa

+2

@corsiKa: Ick. ¡Se ve horriblemente feo para mí! No puedo recordar la última vez que vi un guión bajo en el nombre de un paquete, para ser honesto ... –

2

Trabajo en muchas cosas del gobierno y solemos utilizar el guión bajo así bar_baz.

42

Acabo de revisar el historial de mi navegador, y en los últimos 2 meses no he visitado un solo dominio con un guión. Entonces la convención es cambiar el nombre de la compañía.

Como alternativa, omita el guión, porque BazBaz nunca incluirá el código de Baz = Baz en sí mismo.

+3

Impresionante. LOL'ed. –

+0

Creo que la junta directiva se opondrá a este enfoque, ¡pero yo también me di cuenta! – corsiKa

+0

Aparentemente, solo la persona que hizo la pregunta puede aceptar una respuesta. Desafortunadamente ... – root

Cuestiones relacionadas