web-dev-qa-db-fra.com

Java Convention de dénomination avec des acronymes

Quel est le nom correct pour ce qui suit Java classe: DVDPlayer ou DvdPlayer?

198
DD.

Comme il semble que la réponse est qu’il n’existe pas de norme unique pour cela en Java, je voudrais noter que les directives de conception du .NET Framework le précisent.

Maintenant, avant de me reprocher d’être hors sujet, rappelez-vous que les consignes de dénomination de classe pour Java et le .NET Framework sont assez similaires, ce qui les rend utiles en tant que référence persuasive.

Règles générales

Les deux directives recommandent d'utiliser des acronymes uniquement lorsque l'acronyme est largement connu et bien compris. Les DVD ou XML en sont d’excellents exemples car, bien que vous les reconnaissiez immédiatement, il faudrait un peu plus de temps pour reconnaître la version développée.

Les abréviations

Les directives .NET Framework recommandent de ne pas utiliser d’abréviations (par opposition à des acronymes), sauf que deux abréviations communes "ID" et "OK" peuvent être utilisées dans les identificateurs. Lorsque vous utilisez une abréviation, la casse mixte Id est toujours utilisée, sauf pour le premier mot d'un identifiant camelCase (par opposition à un identifiant PascalCase).

Dans Java, cette convention n'est suivie que de temps en temps. jetez un coup d'œil à la façon dont les orthographes mélangées getID et getId sont dans le JCL. (Faites défiler à mi-chemin vers le bas de cette page). Dans le version de Java 8 bien que, getId soit de plus en plus utilisé, ce qui laisse à penser que la convention PascalCase est préférée de nos jours. simplement éviter les abréviations lorsque cela est possible.

Acronymes courts

Les directives du .NET Framework indiquent que les acronymes à deux lettres comme "IO" doivent avoir la même casse pour les deux lettres. Donc, pour les identifiants PascalCase (comme un nom de classe), vous obtiendrez DBRate, tandis que pour un identifiant camelCase (comme une variable locale), vous pourriez avoir ioChannel.

Cela semble bien être la convention qui prévaut dans Java également.

Acronymes Longs

Les directives .NET Framework recommandent que les acronymes de trois lettres ou plus utilisent des majuscules et des majuscules pour les identifiants PascalCase et camelCase, à l'exception du premier mot d'un identifiant camelCase. Ainsi, pour un nom de classe, vous pourriez avoir XmlDocument, tandis qu'une variable locale pourrait s'appeler httpRequest.

Cette convention n'est pas toujours suivie en Java. Les acronymes à quatre caractères semblent généralement utiliser une casse mixte, mais même le code JCL n’est pas cohérent à propos des acronymes à trois lettres. La plupart d'entre eux semblent être tous en majuscules, comme "URL", "XML", "SQL" et "DOM", mais il existe quelques exceptions comme "Jar".

Conclusion

Pour Java:

Pour les acronymes de 4 lettres ou plus, utilisez une casse mixte. C'est ce que fait la bibliothèque standard, ce qui est tout à fait logique.

Pour les acronymes de 3 lettres, vous pouvez utiliser toutes les majuscules, comme le JCL, ou une combinaison de casse, comme le fait le .NET Framework. De toute façon, soyez cohérent.

Pour les acronymes de 2 lettres, utilisez des majuscules.

Pour les abréviations à 2 lettres, Java n’a pas vraiment de standard, mais je suggère d’utiliser une casse mixte, à moins que la cohérence avec d’autres noms donne une meilleure apparence à toutes les majuscules.

213
Kevin Cathcart

Il n'y a pas de réponse "correcte". Juste un ensemble de pratiques et de conventions qui fonctionnent mieux avec vos autres outils.

Par conséquent, je préfère DvdPlayer. C'est plus utile que dans Eclipse, vous pouvez le faire Ctrl+Shift+T et choisissez les classes par la première lettre de chaque mot.

alt text

96
flybywire

Je les ai vus tous les deux utilisés à l'état sauvage et Sun semble opter pour le style DVDPlayer. Je préfère cependant DvdPlayer, car ainsi, les limites des mots sont clairement définies, même s’il existe plusieurs acronymes consécutifs, comme dans HTTPURLConnection.

50
JaakkoK

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

Catalogue catalogue;
Person person;

Par conséquent, si j’utilisais DVDPlayer, comment appellerais-je une instance de cela? dVDPlayer? Par conséquent, je choisirais le nom de classe DvdPlayer afin que vous puissiez nommer les instances comme dvdPlayer.

34
Peter Perháč

Quelques exemples tirés des classes JavaSE, Apache commons et spring:

  • HttpURLConnection
  • HTTPAddress
  • UrlPathHelper
  • AopProxy
  • ISBNValidator

Donc, cela n'a pas vraiment d'importance.

31
Bozho

Effective Java semble préférer DvdPlayer.

23
Brian Harris

Comme d'autres l'ont indiqué, c'est un style qui varie selon les projets. Les projets Google tels que Guava et GWT préfèrent le style DvdPlayer.

https://google.github.io/styleguide/javaguide.html#s5.3-camel-case

8
Steven Benitez

De Sun Java docs :

Les noms de classe doivent être des noms, en combinaison avec la première lettre de chaque mot interne en majuscule. Essayez de garder les noms de classe simples et descriptifs. Utilisez des mots entiers - évitez les acronymes et les abréviations (à moins que l'abréviation soit beaucoup plus utilisée que la forme longue, telle que l'URL ou le HTML).

8
codaddict

DVDPlayer est la norme, mais DvdPlayer n'est pas rare.

Vous voyez le plus souvent getId. Cela est probablement dû au fait que l’ID est un raccourcissement de "l’identité". Ce sont en fait les initiales du document d'identité.

HttpURLConnection est souvent donné à titre d'exemple de convention mixte. Cependant, "http" utilisé comme nom de protocole dans une URL doit être en minuscule (bien que les majuscules soient souvent acceptées).

3
Tom Hawtin - tackline

Il n'y a pas de "correct", seulement les préférences ici.

Sun est cohérent dans la façon dont il nomme les classes contenant "URL" et "HTML", mais je vois HTTP en utilisant à la fois les majuscules et les majuscules dans les javadocs.

Personnellement, je préférerais DvdPlayer.

0
duffymo