Comment séparer les mots dans les noms de paquets? Lesquels des énoncés suivants sont corrects?
com.stackoverflow.my_package
(trait de soulignement)com.stackoverflow.my-package
(traits d'union)com.stackoverflow.MyPackage
(CamelCase)Quelle est la norme générale?
Voici ce que le document officiel sur les conventions de dénomination prescrit:
Paquets
Le préfixe d'un nom de package unique est toujours écrit en lettres minuscules ASCII et doit être l'un des noms de domaine de niveau supérieur, actuellement
com
,edu
,gov
,mil
,net
,org
, ou l’un des codes anglais à deux lettres identifiant les pays, comme spécifié dans la norme ISO 3166, 1981.Les composants suivants du nom du package varient en fonction des conventions de dénomination internes de l'organisation. De telles conventions peuvent spécifier que certains composants de nom de répertoire sont des noms de division, de département, de projet, d'ordinateur ou de connexion.
Exemples
com.Sun.eng
com.Apple.quicktime.v2
edu.cmu.cs.bovik.cheese
Notez que tout ce qui suit le préfixe de domaine de premier niveau n'est pas spécifié par le document ci-dessus. Le JLS est également d’accord avec cela en donnant les exemples suivants:
com.Sun.sunsoft.DOE
gov.whitehouse.socks.mousefinder
com.JavaSoft.jag.Oak
org.npr.pledge.driver
uk.ac.city.rugby.game
L'extrait suivant est également pertinent:
Dans certains cas, le nom de domaine Internet peut ne pas être un nom de package valide. Voici quelques conventions suggérées pour faire face à ces situations:
- Si le nom de domaine contient un trait d'union ou tout autre caractère spécial non autorisé dans un identifiant, convertissez-le en trait de soulignement.
- Si l'un des composants de nom de package obtenus est un mot-clé, ajoutez-leur un trait de soulignement.
- Si l'un des composants de nom de package résultant commence par un chiffre ou tout autre caractère non autorisé en tant que caractère initial d'un identificateur, utilisez un trait de soulignement préfixé au composant.
Les trois ne sont pas les conventions.
Utilisez com.stackoverflow.mypackage
.
Les noms de paquetages ne suivent pas la casse de chameau, ni les traits de soulignement ni les traits d'union convention de nommage du paquet .
De plus, Guide de style de Google Java spécifie exactement la même convention (c'est-à-dire com.stackoverflow.mypackage
):
5.2.1 Noms de paquets
Les noms de paquetages sont tous en minuscules, avec des mots consécutifs simplement concaténés ensemble (sans trait de soulignement). Par exemple,
com.example.deepspace
, pascom.example.deepSpace
oucom.example.deep_space
.- Google Java Guide de style: 5.2 Règles par type d'identificateur: 5.2.1 Noms de package .
Les conventions de dénomination officielles ne sont pas très strictes, elles n'interdisent même pas la notation des cas de chameaux, à l'exception du préfixe (com
dans votre exemple).
Mais personnellement, j'éviterais les majuscules et césures, nombres pairs. Je choisirais com.stackoverflow.mypackage
comme l'a suggéré Bragboy.
(les tirets '-' ne sont pas légaux dans les noms de paquets)
EDIT
Intéressant - la spécification du langage a également son mot à dire sur les conventions de dénomination.
Dans Chapitre 7.7 Noms uniques de paquets , nous voyons des exemples avec des noms de paquets composés de lettres majuscules (la notation CamelCase serait donc OK) et suggérant de remplacer hyphonation par un trait de soulignement ("mary-lou" -> "mary_lou") et le préfixe Java mots-clés avec un trait de soulignement ("com.example.enum" -> "com.example._enum")
Vous trouverez d'autres exemples de lettres majuscules dans les noms de paquetages au chapitre 6.8.1 Noms de paquetage .
Tout le monde peut utiliser un trait de soulignement _ (c'est correct)
Personne ne devrait utiliser hypen - (sa mauvaise pratique)
Personne ne devrait utiliser des lettres majuscules dans les noms de paquets (mauvaise pratique)
NOTE: Ici, "mauvaise pratique" signifie techniquement que vous êtes autorisé à l'utiliser mais que, de manière conventionnelle, ce n'est pas une bonne manière d'écrire.
Source: Nommer un package (docs.Oracle)
Les traits de soulignement sont moches dans les noms de paquets. Pour ce qui vaut la peine, dans le cas de noms composés de trois mots ou plus, j'utilise des initiales (par exemple: com.company.app.ingresoegresofijo (ingreso/egreso fijo) -> com.company.app.iefijo
), puis documente l'objectif du paquet dans package-info.Java
.
La concaténation de mots dans le nom du paquet est quelque chose que la plupart des développeurs ne font pas.
Vous pouvez utiliser quelque chose comme.
com.stackoverflow.mypackage
Report Déclaration de nom JLS