445 votes

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

Comment doit-on séparer les mots dans les noms de paquets ? Lesquelles des propositions suivantes sont correctes ?

  1. com.stackoverflow.my_package ( Snake Case en utilisant le trait de soulignement)
  2. com.stackoverflow.my-package ( Kebab Case en utilisant des traits d'union)
  3. com.stackoverflow.myPackage ( Camel Case )
  4. com.stackoverflow.MyPackage ( Pascal Case )

Quelle est la norme générale ?

25 votes

Un autre exemple non encore mentionné est l'utilisation d'un point : com.stackoverflow.my.package

18 votes

(2) n'est pas légal Java. Je ne comprends pas pourquoi vous demandez ça.

0 votes

Notez que tout cela ne sert qu'à garantir l'unicité. La seule chose réellement appliquée est de rester en dehors de l'espace java.*.

336voto

bragboy Points 13615

Les trois ne sont pas les conventions.

Utilisez com.stackoverflow.mypackage .

Les noms des paquets ne respectent pas la casse, les traits de soulignement ou les traits d'union. convention de dénomination des paquets .

También, Guide de style Java de Google spécifie exactement la même chose (c'est-à-dire com.stackoverflow.mypackage ) convention :

5.2.1 Noms des paquets

Les noms de paquets sont tous en minuscules, les mots consécutifs étant simplement concaténés (sans soulignement). Par exemple, com.example.deepspace , pas com.example.deepSpace o com.example.deep_space .

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

9 votes

Je suis partiellement d'accord - ils ne sont pas "mauvais" selon les conventions de nommage de Java mais ils ne devraient pas être utilisés à mon avis. ( java.sun.com/docs/codeconv/html/CodeConventions.doc8.html )

0 votes

@Andreas_D le lien que vous avez fourni indique que "Le préfixe d'un nom de paquet unique est toujours écrit en lettres ASCII minuscules".

1 votes

@JoseGómez "Le préfixe ". Donc, selon moi, cela n'exclut pas que tous les autres mots composant le nom d'un paquet puissent être en CamelCase ou en snake_case.

282voto

polygenelubricants Points 136838

Voici ce que prescrit le document officiel sur les conventions de dénomination :

Packages

Le préfixe d'un nom de paquet unique est toujours écrit en lettres ASCII minuscules et doit être un des noms de domaine de premier niveau, actuellement com , edu , gov , mil , net , org ou l'un des codes anglais à deux lettres identifiant les pays, tels que spécifiés dans la norme ISO 3166, 1981.

Les composants ultérieurs du nom du paquet varient en fonction des conventions de dénomination internes d'une organisation. Ces conventions peuvent spécifier que certains composants du nom du répertoire doivent être des noms de division, de département, de projet, de machine ou de connexion.

Exemples

  • com.sun.eng
  • com.apple.quicktime.v2
  • edu.cmu.cs.bovik.cheese

Références


Notez qu'en particulier, tout ce qui suit le préfixe du 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 paquet 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 un trait de soulignement.
  • Si l'un des composants du nom du paquet qui en résulte est un mot-clé, ajoutez-lui un trait de soulignement.
  • Si l'un des composants du nom du paquet résultant commence par un chiffre, ou tout autre caractère qui n'est pas autorisé en tant que caractère initial d'un identifiant, un trait de soulignement est préfixé au composant.

Références

59 votes

Le chapitre 7.7 recommande même l'utilisation de l'underscore dans les noms de paquets !

2 votes

8 votes

Ici : oracle.com/technetwork/java/codeconventions-135099.html ça dit tout en bas, mais ici docs.oracle.com/javase/specs/jls/se7/html/jls-6.html#jls-6.1 il est dit que le premier composant doit être en minuscules, et ils ont également supprimé les exemples de séparation de mots en majuscules. Également ici : docs.oracle.com/javase/tutorial/java/package/namingpkgs.html c'est écrit tout en minuscules. Il semble donc que les majuscules dans les noms de paquets soient actuellement déconseillées.

30voto

Himanshu Mori Points 563

Tout le monde peut utiliser l'underscore _ (son Okay)

Personne ne devrait utiliser l'hypen - (sa mauvaise pratique)

Il ne faut pas utiliser de majuscules dans les noms de paquets (mauvaise pratique).

REMARQUE : "Mauvaise pratique" signifie que, techniquement, vous êtes autorisé à l'utiliser, mais que, conventionnellement, il n'est pas de bon ton de l'écrire.

Fuente: Nommer un paquet (docs.oracle)

20voto

Andreas_D Points 64111

Les conventions de nommage officielles ne sont pas si strictes, elles n'interdisent même pas la notation en majuscules, sauf pour les préfixes ( com dans votre exemple).

Mais personnellement, j'éviterais les lettres majuscules et les césures des numéros pairs. Je choisirais com.stackoverflow.mypackage comme Bragboy l'a suggéré aussi.

(les traits d'union '-' ne sont pas autorisés dans les noms de paquets)

EDITAR

Intéressant - la spécification du langage a aussi quelque chose à dire sur les conventions de nommage.

Sur Chapitre 7.7 Noms de paquet uniques nous voyons des exemples avec des noms de paquets composés de lettres majuscules (la notation CamelCase serait donc OK) et ils suggèrent de remplacer l'hyphonie par un trait de soulignement ("mary-lou" -> "mary_lou") et de préfixer les mots-clés java par un trait de soulignement ("com.example.enum" -> "com.example._enum")

D'autres exemples de lettres majuscules dans les noms de paquets peuvent être trouvés dans le chapitre 6.8.1 Noms des paquets .

2 votes

Comme Andreas l'a remarqué, il n'y a pas de règles sur l'utilisation des majuscules dans les noms de paquets. Une raison spécifique pour l'éviter est que j'ai vu des gens rencontrer des problèmes avec des noms de paquets en majuscules ou en minuscules lors de développements multiplateformes. En particulier, lorsque quelqu'un décide de renommer ou de changer la casse d'un paquet, vous dépendez alors à la fois de votre VCS et de votre environnement de développement pour faire exactement la bonne chose avec l'affaire du répertoire.

2 votes

En fait, il y a des règles : "Le préfixe d'un nom de paquet unique est toujours écrit en lettres ASCII entièrement minuscules" ( oracle.com/technetwork/java/codeconventions-135099.html )

5voto

jpangamarca Points 36

Les underscores ne sont pas jolis dans les noms de paquets. Pour ce qui est de la valeur, 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 de documenter l'objectif du paquet dans package-info.java .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X