270 votes

Convention de nommage Java avec acronymes

Quel est le nom correct de la classe Java suivante : DVDPlayer o DvdPlayer ?

130 votes

Je déteste les acronymes. DigitalVersatileDiscPlayer est la voie à suivre.

9 votes

+1 à Tom pour la blague. Je trouve cette question utile si "correct" est réinterprété comme "standard" ou "le plus typique". La réponse acceptée est géniale !

7 votes

Pour moi, il est logique de considérer ces acronymes comme un seul mot et, à ce titre, j'applique la règle suivante convention et utiliser DvdPlayer .

300voto

Kevin Cathcart Points 3521

Puisqu'il semble que la réponse soit qu'il n'y a pas de norme unique pour cela en Java, j'aimerais noter que les directives de conception de .NET Framework le spécifient.

Avant de me reprocher d'être hors sujet, n'oubliez pas que les directives de dénomination des classes de Java et de .NET Framework sont assez similaires, ce qui rend les directives de .NET utiles comme référence convaincante.

Règles générales

Les deux directives recommandent de n'utiliser les acronymes que lorsque ceux-ci sont largement connus et bien compris. DVD ou XML en sont d'excellents exemples, car si vous les reconnaîtrez immédiatement, il vous faudra un peu plus de temps pour reconnaître la version étendue.

Abréviations

Les lignes directrices du cadre .NET recommandent de ne pas utiliser d'abréviations (par opposition aux acronymes), sauf que deux abréviations courantes ID y OK peuvent être utilisés dans les identificateurs. Lors de l'utilisation d'une abréviation, la casse mixte Id est toujours utilisé, sauf pour le premier mot d'un identifiant en camelCase (par opposition à un identifiant en PascalCase).

En Java, cette convention n'est respectée qu'une partie du temps. Jetez un coup d'œil à quel point les orthographes sont mélangées getID y getId sont dans le JCL. (Faites défiler cette page jusqu'en bas). Dans le Version de Java 8 cependant, getId est de plus en plus utilisée, ce qui indique que la convention PascalCase est aujourd'hui préférée. Il est préférable d'éviter complètement les abréviations lorsque cela est possible.

Acronymes courts

Les lignes directrices de .NET Framework stipulent que les acronymes à deux lettres comme IO doit avoir la même casse pour les deux lettres. Ainsi, pour les identifiants en PascalCase (comme un nom de classe), vous obtiendrez DBRate alors que pour un identificateur en camelCase (comme une variable locale), on peut avoir ioChannel .

Cela semble être la convention dominante en Java également.

Acronymes longs

Les directives du .NET Framework recommandent que les acronymes de trois lettres ou plus utilisent une casse mixte pour les identificateurs PascalCase et camelCase, sauf pour le premier mot d'un identificateur camelCase. Ainsi, pour un nom de classe, vous pourriez avoir XmlDocument alors qu'une variable locale peut être nommée httpRequest .

Cette convention n'est pas toujours respectée en Java. Les acronymes à quatre caractères semblent généralement utiliser la casse mixte, mais même le JCL n'est pas cohérent en ce qui concerne les acronymes à trois lettres. La plupart d'entre eux semblent être tout en majuscules, comme par exemple URL , XML , SQL et DOM mais il y a quelques exceptions comme Jar .

Conclusion

Pour Java :

Pour les acronymes de plus de 4 lettres, utilisez une casse mixte. La bibliothèque standard le fait, et c'est tout simplement logique.

Pour les acronymes de trois lettres, vous pouvez utiliser des majuscules comme pour le JCL, ou des minuscules et des minuscules comme pour le .NET Framework. Dans tous les cas, soyez cohérent.

Pour les acronymes de 2 lettres, utilisez les majuscules.

Pour les abréviations de deux lettres, Java n'a pas vraiment de norme, mais je suggère d'utiliser des majuscules et des minuscules, à moins que la cohérence avec d'autres noms ne rende les majuscules plus attrayantes.

18 votes

Bien dit, bel effort !

1 votes

J'aime bien, sauf que ce n'est pas cohérent d'avoir des majuscules pour les acronymes de 3 et 2 lettres. (Je suis peut-être trop puriste, mais je vois la réponse acceptée pour des raisons pratiques. De plus, il y a le facteur de confusion).

1 votes

@JCoombs : Eh bien, l'incohérence pour 2 lettres est de quelque chose comme IpAddress ce qui semble terrible pour beaucoup de gens. Personnellement, lorsque j'ai besoin d'écrire du code Java, j'opte pour une casse mixte pour les acronymes de trois lettres, en ne laissant que les deux lettres comme cas spécial.

114voto

flybywire Points 36050

Il n'y a pas de réponse "correcte". Il s'agit simplement d'un ensemble de pratiques et de conventions qui se marient mieux avec vos autres outils.

Je préfère donc DvdPlayer . C'est plus utile car dans Eclipse vous pouvez faire Ctrl + Shift + T et choisir les classes en fonction de la première lettre de chaque mot.

alt text

24 votes

Oooo c'est une astuce utile pour l'éclipse. Merci !

2 votes

(+1) un bon conseil. cela répond à la question pour moi :-)

2 votes

Le mot "SIO" est suffisant pour trouver cette classe.

59voto

jk. Points 5780

J'ai vu les deux utilisés dans la nature, et Sun semble opter pour le DVDPlayer le style. Je préfère DvdPlayer car de cette façon, les limites des mots sont claires, même s'il y a plusieurs acronymes consécutifs, comme dans l'exemple suivant HTTPURLConnection .

3 votes

C'est aussi plus rapide de taper de cette façon.

7 votes

Je pense que "DVDPlayer" rend les limites du mot plus claires. "Dvd" n'est pas un mot, alors que "DVD" est un acronyme pour les mots "Digital Versatile Disc". Les limites réelles du mot dans "DVD Player" sont donc "D", "V", "D" et "P".

30 votes

@GregBrown : Un DVD est un disque avec un trou, personne à part vous ne connaît son nom complet, ni ne s'y intéresse. Et il est bien plus pratique d'utiliser DvdPlayer.

45voto

Peter Perháč Points 8007

J'aime définir les instances individuelles des classes de la manière suivante :

Catalogue catalogue;
Person person;

Par conséquent, si j'ai utilisé DVDPlayer comment j'appellerais une instance de ça ? dVDPlayer ? Je choisirais donc le DvdPlayer Vous pouvez donc nommer les instances comme suit dvdPlayer .

18 votes

Quel est le problème avec DVDPlayer dvdPlayer; ?

14 votes

@DerFlatulator Qu'est-ce qui ne va pas avec ça ? Peu importe comment vous êtes arrivé à dvdPlayer quand tu y retourneras, tu auras DvdPlayer .

7 votes

@DerFlatulator : c'est une question d'automatisation lors de la conversion de UpperCamelCase en lowerCamelCase : j'ai eu le problème en automatisant le mapping Hibernate vers un snake_case : DvdPlayer -> dvd_player mais DVDPlayer -> d_v_d_player . Il n'y a aucun moyen d'automatiser le passage de DVDPlayer à dvd_player.

30voto

Brian Harris Points 1031

Java efficace semble préférer DvdPlayer.

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