web-dev-qa-db-fra.com

Quelle est la convention pour le séparateur de mots dans les noms de package Java?

Comment séparer les mots dans les noms de paquets? Lesquels des énoncés suivants sont corrects?

  1. com.stackoverflow.my_package (trait de soulignement)
  2. com.stackoverflow.my-package (traits d'union)
  3. com.stackoverflow.MyPackage (CamelCase)

Quelle est la norme générale?

318
Jigar

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

Références


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.

Références

224
polygenelubricants

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, pas com.example.deepSpace ou com.example.deep_space.

- Google Java Guide de style: 5.2 Règles par type d'identificateur: 5.2.1 Noms de package .

225
bragboy

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 .

16
Andreas_D

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)

14
Himanshu Mori

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.

3
jpangamarca

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

1
CraUmm