Je déteste les acronymes. DigitalVersatileDiscPlayerest la voie à suivre.
Tom Hawtin - tackline
7
+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 super!
Jon Coombs
6
Pour moi, il est logique de considérer ces acronymes comme un seul mot et, en tant que tel, je respecte la convention et l'utilisation DvdPlayer.
Daniel
7
Le guide de style a à dire à ce sujet: "Formatez une abréviation comme un mot si elle fait partie d'un nom de classe plus long." , DvdPlayerc'est la voie à suivre. (Et, pour Tom, "Utilisez des mots entiers et évitez d'utiliser des abréviations à moins que l'abréviation ne soit plus largement utilisée que la forme longue" , et je pense que "DVD" est plus largement utilisé que "Digital Versatile Disc" :-)
aioobe
Vous vouliez certainement dire "Discus", n'est-ce pas? :)
Ville Oikarinen
Réponses:
237
Comme il semble que la réponse soit qu'il n'y a pas de norme unique pour cela en Java, je voudrais noter que les directives de conception du .NET Framework le spécifient.
Maintenant, avant de me critiquer pour être hors sujet, n'oubliez pas que les directives de dénomination des classes pour Java et .NET Framework sont assez similaires, ce qui rend les directives .NET utiles comme référence persuasive.
Règles générales
Les deux lignes directrices recommandent d'utiliser uniquement des acronymes lorsque l'acronyme est largement connu et bien compris. Les DVD ou XML en sont d'excellents exemples, car même si vous les reconnaîtrez immédiatement, il faudrait un peu plus de temps pour reconnaître la version étendue.
Abréviations
Les directives du .NET Framework recommandent de ne pas utiliser d'abréviations (par opposition aux acronymes), sauf que deux abréviations courantes «ID» et «OK» peuvent être utilisées dans les identificateurs. Lors de l'utilisation d'une abréviation, la casse mixte Idest toujours utilisée sauf pour le premier mot d'un identifiant camelCase (par opposition à un identifiant PascalCase).
En Java, cette convention n'est suivie que de temps en temps. Jetez un œil à la façon dont les orthographes sont mélangées getIDet getIddans le JCL. (Faites défiler à mi-chemin sur cette page). Dans la version Java 8, cependant, getIdest de plus en plus utilisé, ce qui laisse entendre que la convention PascalCase est préférée de nos jours. Il est préférable d'éviter simplement les abréviations lorsque cela est possible.
Acronymes courts
Les directives du .NET Framework indiquent que les acronymes à deux lettres comme «IO» devraient avoir le même cas pour les deux lettres. Donc, pour les identifiants PascalCase (comme un nom de classe), vous obtiendriez DBRate, tandis que pour un identifiant camelCase (comme une variable locale), vous pourriez en avoir ioChannel.
Cela semble certainement être la convention dominante à Java également.
Acronymes longs
Les directives .NET Framework recommandent que les acronymes de trois lettres ou plus utilisent une casse mixte pour les identifiants PascalCase et camelCase, à l'exception du premier mot d'un identifiant camelCase. Ainsi, pour un nom de classe, vous pourriez avoirXmlDocument , alors qu'une variable locale pourrait être nommée httpRequest.
Cette convention n'est pas toujours suivie en Java. Les acronymes à quatre caractères semblent généralement utiliser des majuscules, mais même le JCL n'est pas cohérent avec les acronymes à trois lettres. La plupart d'entre eux semblent tout 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 la casse mixte. La bibliothèque standard fait cela, et c'est tout à fait logique.
Pour les acronymes de 3 lettres, vous pouvez utiliser tous les majuscules comme le JCL, ou vous pouvez utiliser des majuscules comme le .NET Framework. Quoi qu'il en soit, soyez cohérent.
Pour les acronymes de 2 lettres, utilisez tout en majuscules.
Pour les abréviations à 2 lettres, Java n'a pas vraiment de standard, mais je suggère d'utiliser une casse mixte, sauf si la cohérence avec d'autres noms rendrait tous les majuscules plus beaux.
J'aime ça, sauf qu'il n'est pas cohérent d'avoir des CAPS pour les acronymes à 3 et 2 lettres. (Je suis peut-être trop puriste, mais voyez la réponse acceptée pour des raisons pratiques. De plus, il y a le facteur de confusion.)
Jon Coombs
1
@JCoombs: Eh bien, l'incohérence pour 2 lettres est quelque chose IpAddressqui semble terrible à beaucoup de gens. Personnellement, quand j'ai besoin d'écrire du code Java, je choisis des acronymes à 3 lettres, en ne laissant que les deux lettres comme cas spécial.
Kevin Cathcart
5
Que faire si le nom de votre classe comporte plusieurs acronymes adjacents à deux lettres? Indépendamment de ce que vous faites, cela semblera `` faux '' - USGFCharset, UsGfCharset, US_GFCharset ...
Kevin
3
Vraiment une bonne réponse. Mais personnellement, je n'aime pas l'idée des directives .NET de nommer différemment selon la longueur des acronymes et s'il s'agit ou non d'une abréviation. Qui se soucie réellement et vérifie la longueur d'un acronyme? Ou si c'est une abréviation? Je préfère une règle générale pour nommer. Le problème survient lors de l'utilisation de bibliothèques tierces avec des conventions différentes de la règle que vous avez choisie.
Amani Kilumanga
98
Il n'y a pas de réponse "correcte". Juste un ensemble de pratiques et de conventions qui jouent mieux avec vos autres outils.
Je préfère donc DvdPlayer. C'est plus utile car dans Eclipse vous pouvez faire Ctrl+ Shift+ Tet choisir des classes par la première lettre de chaque mot.
(+1) un bon conseil. qui répond à la question pour moi :-)
Asaf
2
Il suffit de "SIO" pour trouver cette classe.
finnw
7
Cela fonctionne également ailleurs dans Eclipse - l'auto-complétion par exemple. Vous avez une méthode / variable nommée 'myDvdCoverImage'? - tapez simplement mDCI Ctrl + Espace
teabot
3
il existe également des raccourcis déjà définis, comme sysout Ctrl + Space, vous donne System.out.println. il en va de même pour (essayer) et (pour)
medopal
50
Je les ai vus tous les deux utilisés à l'état sauvage, et Sun semble aller pour le DVDPlayerstyle. Je préfère DvdPlayer, cependant, car de cette façon, il est clair où se trouvent les limites des mots même s'il existe plusieurs acronymes consécutifs, comme dans HTTPURLConnection.
Il est également plus rapide de taper de cette façon.
Ates Goral
6
Je pense que "DVDPlayer" rend les limites des mots plus claires. "Dvd" n'est pas un mot, alors que "DVD" est un acronyme pour les mots "Digital Versatile Disc". Ainsi, les limites réelles des mots dans "Lecteur DVD" sont "D", "V", "D" et "P".
Greg Brown
19
@GregBrown: Un DVD est un disque avec un trou, personne sauf vous ne connaît son nom complet, ni s'en soucie. Et il est beaucoup plus pratique d'utiliser DvdPlayer.
Igor Rodriguez
4
@GregBrown: En fait, c'est plus pratique au moins dans Eclipse, où la reconnaissance des cas de chameaux est un problème avec les acronymes: c'est-à-dire qu'avec DvdPlayer vous pouvez taper "DP" et appuyer sur Ctrl + 1 pour avoir le choix de sélectionner DvdPlayer, mais si vous aviez DVDPlayer, vous devez taper "DVDP". Et c'est encore plus ennuyeux s'il est plus long. Je ne voudrais pas avoir un UNESCOConnector dans mon code. Quoi qu'il en soit, c'est une question de choix.
Igor Rodriguez
22
Un autre bon exemple est HTTPSID - est-ce que je voulais dire HTTP SID ou HTTPS ID ... Par conséquent, il devrait être écrit HttpSid ou HttpsId respectivement pour mieux expliquer la signification.
Oz Edri
37
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 pourrais-je appeler une instance de cela? dVDPlayer? Par conséquent, je choisirais le DvdPlayernom de la classe, afin que vous puissiez nommer les instances comme dvdPlayer.
@DerFlatulator Qu'est-ce qui ne va pas? Peu importe comment vous en êtes arrivé dvdPlayer, quand vous reviendrez, vous obtiendrez DvdPlayer.
maaartinus
5
@DerFlatulator: c'est une question d'automatisation lors de la conversion de UpperCamelCase en lowerCamelCase: J'ai eu le problème lors de l'automatisation du mappage Hibernate dans un snake_case: DvdPlayer -> dvd_playermais DVDPlayer -> d_v_d_player. Il n'y a aucun moyen d'automatiser DVDPlayer vers dvd_player.
pdem
3
@DerFlatulator: d'accord, merci pour la réponse, cela a fonctionné dans ce cas. Mais je suis toujours convaincu par la notation "DvdPlayer": qu'en est-il de DVDRPGPlayer?, Il devrait être converti en dvdRpgPlayer, pas en dvdrpgPlayer.
pdem
2
Pensez également à vos getters et setters: getDvdPlayer()fonctionne mieux que getDVDPlayer(), par exemple, lorsqu'il est utilisé avec JSP EL (par exemple, foo.dvdPlayer). Et si vous nommez vos getters en minuscules dans les acronymes, il est préférable de conserver les noms de vos classes pour la cohérence et la prévisibilité.
daiscog
33
Quelques exemples des classes JavaSE, apache commons et spring:
D'accord. Soyez juste cohérent dans votre base de code.
JARC
2
Je ne dirais pas que cela n'a pas d'importance, bien que celui-ci ne soit pas vraiment un gros problème. Certains utilisateurs trouvent les normes généralement préférées très utiles, même si tout le monde n'est pas cohérent quant à leur respect.
Jon Coombs
dois - je préfère SRSplus SoftwareRequirementSpecification?
Comme d'autres l'ont indiqué, c'est une chose de style qui diffère selon les projets. Les projets Google tels que Guava et GWT préfèrent le DvdPlayerstyle.
Les noms de classe doivent être des noms, en casse mixte avec la première lettre de chaque mot interne en majuscule. Essayez de garder vos noms de classe simples et descriptifs. Utilisez des mots entiers - évitez les acronymes et les abréviations (sauf si l'abréviation est beaucoup plus largement utilisée que la forme longue, comme URL ou HTML).
Cela ne dit vraiment rien sur le fait qu'il s'agisse de majuscules ou de chameaux.
DD.
@DD. Je pense que des points "beaucoup plus largement utilisés" pour utiliser des majuscules pour les acronymes pertinents (HTTP, GET, etc.) que pour certains mots aléatoires spécifiques à l'entreprise comme DVD, MRI, MAGA, etc.
goelakash
3
DVDPlayer est la norme, mais DvdPlayer n'est pas rare.
Vous voyez le plus souvent getId. Cela est probablement dû au fait que l'identification est un raccourcissement de «l'identité». Il s'agit en fait des initiales du document d'identité.
HttpURLConnectionest souvent donné comme exemple de convention mixte. Cependant, "http" utilisé comme nom de protocole dans une URL doit être en minuscules (bien que les majuscules soient souvent acceptées).
Je suis à peu près sûr que la plupart des gens utilisent ID comme abréviation d'identifiant ... c'est-à-dire que dans une base de données, l'ID de table fait référence à l'identifiant de table du document d'identité.
DD.
9
DVDPlayer n'est certainement pas la norme; même le JDK est extrêmement incohérent dans son approche à cet égard.
Kevin Bourrillion
0
Il n'y a pas de "correct", seulement des préférences ici.
Sun est cohérent dans la façon dont ils nomment les classes contenant "URL" et "HTML", mais je vois HTTP utilisant à la fois toutes les majuscules et le cas de chameau dans les javadocs.
DigitalVersatileDiscPlayer
est la voie à suivre.DvdPlayer
.DvdPlayer
c'est la voie à suivre. (Et, pour Tom, "Utilisez des mots entiers et évitez d'utiliser des abréviations à moins que l'abréviation ne soit plus largement utilisée que la forme longue" , et je pense que "DVD" est plus largement utilisé que "Digital Versatile Disc" :-)Réponses:
Comme il semble que la réponse soit qu'il n'y a pas de norme unique pour cela en Java, je voudrais noter que les directives de conception du .NET Framework le spécifient.
Maintenant, avant de me critiquer pour être hors sujet, n'oubliez pas que les directives de dénomination des classes pour Java et .NET Framework sont assez similaires, ce qui rend les directives .NET utiles comme référence persuasive.
Règles générales
Les deux lignes directrices recommandent d'utiliser uniquement des acronymes lorsque l'acronyme est largement connu et bien compris. Les DVD ou XML en sont d'excellents exemples, car même si vous les reconnaîtrez immédiatement, il faudrait un peu plus de temps pour reconnaître la version étendue.
Abréviations
Les directives du .NET Framework recommandent de ne pas utiliser d'abréviations (par opposition aux acronymes), sauf que deux abréviations courantes «ID» et «OK» peuvent être utilisées dans les identificateurs. Lors de l'utilisation d'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).En Java, cette convention n'est suivie que de temps en temps. Jetez un œil à la façon dont les orthographes sont mélangées
getID
etgetId
dans le JCL. (Faites défiler à mi-chemin sur cette page). Dans la version Java 8, cependant,getId
est de plus en plus utilisé, ce qui laisse entendre que la convention PascalCase est préférée de nos jours. Il est préférable d'éviter simplement les abréviations lorsque cela est possible.Acronymes courts
Les directives du .NET Framework indiquent que les acronymes à deux lettres comme «IO» devraient avoir le même cas pour les deux lettres. Donc, pour les identifiants PascalCase (comme un nom de classe), vous obtiendriez
DBRate
, tandis que pour un identifiant camelCase (comme une variable locale), vous pourriez en avoirioChannel
.Cela semble certainement être la convention dominante à Java également.
Acronymes longs
Les directives .NET Framework recommandent que les acronymes de trois lettres ou plus utilisent une casse mixte 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
, alors qu'une variable locale pourrait être nomméehttpRequest
.Cette convention n'est pas toujours suivie en Java. Les acronymes à quatre caractères semblent généralement utiliser des majuscules, mais même le JCL n'est pas cohérent avec les acronymes à trois lettres. La plupart d'entre eux semblent tout 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 la casse mixte. La bibliothèque standard fait cela, et c'est tout à fait logique.
Pour les acronymes de 3 lettres, vous pouvez utiliser tous les majuscules comme le JCL, ou vous pouvez utiliser des majuscules comme le .NET Framework. Quoi qu'il en soit, soyez cohérent.
Pour les acronymes de 2 lettres, utilisez tout en majuscules.
Pour les abréviations à 2 lettres, Java n'a pas vraiment de standard, mais je suggère d'utiliser une casse mixte, sauf si la cohérence avec d'autres noms rendrait tous les majuscules plus beaux.
la source
IpAddress
qui semble terrible à beaucoup de gens. Personnellement, quand j'ai besoin d'écrire du code Java, je choisis des acronymes à 3 lettres, en ne laissant que les deux lettres comme cas spécial.Il n'y a pas de réponse "correcte". Juste un ensemble de pratiques et de conventions qui jouent mieux avec vos autres outils.
Je préfère donc
DvdPlayer
. C'est plus utile car dans Eclipse vous pouvez faire Ctrl+ Shift+ Tet choisir des classes par la première lettre de chaque mot.la source
Je les ai vus tous les deux utilisés à l'état sauvage, et Sun semble aller pour le
DVDPlayer
style. Je préfèreDvdPlayer
, cependant, car de cette façon, il est clair où se trouvent les limites des mots même s'il existe plusieurs acronymes consécutifs, comme dansHTTPURLConnection
.la source
J'aime définir des instances individuelles de classes de la manière suivante:
Par conséquent, si j'utilisais
DVDPlayer
, comment pourrais-je appeler une instance de cela?dVDPlayer
? Par conséquent, je choisirais leDvdPlayer
nom de la classe, afin que vous puissiez nommer les instances commedvdPlayer
.la source
DVDPlayer dvdPlayer;
?dvdPlayer
, quand vous reviendrez, vous obtiendrezDvdPlayer
.DvdPlayer -> dvd_player
maisDVDPlayer -> d_v_d_player
. Il n'y a aucun moyen d'automatiser DVDPlayer vers dvd_player.getDvdPlayer()
fonctionne mieux quegetDVDPlayer()
, par exemple, lorsqu'il est utilisé avec JSP EL (par exemple,foo.dvdPlayer
). Et si vous nommez vos getters en minuscules dans les acronymes, il est préférable de conserver les noms de vos classes pour la cohérence et la prévisibilité.Quelques exemples des classes JavaSE, apache commons et spring:
HttpURLConnection
HTTPAddress
UrlPathHelper
AopProxy
ISBNValidator
Donc - ça n'a pas vraiment d'importance.
la source
SRS
plusSoftwareRequirementSpecification
?Java efficace semble préférer DvdPlayer.
la source
Comme d'autres l'ont indiqué, c'est une chose de style qui diffère selon les projets. Les projets Google tels que Guava et GWT préfèrent le
DvdPlayer
style.https://google.github.io/styleguide/javaguide.html#s5.3-camel-case
la source
DvdPlayer
style: google-styleguide.googlecode.com/svn/trunk/…De la documentation de Sun Java :
la source
DVDPlayer
est la norme, maisDvdPlayer
n'est pas rare.Vous voyez le plus souvent
getId
. Cela est probablement dû au fait que l'identification est un raccourcissement de «l'identité». Il s'agit en fait des initiales du document d'identité.HttpURLConnection
est souvent donné comme exemple de convention mixte. Cependant, "http" utilisé comme nom de protocole dans une URL doit être en minuscules (bien que les majuscules soient souvent acceptées).la source
Il n'y a pas de "correct", seulement des préférences ici.
Sun est cohérent dans la façon dont ils nomment les classes contenant "URL" et "HTML", mais je vois HTTP utilisant à la fois toutes les majuscules et le cas de chameau dans les javadocs.
Personnellement, je préfère DvdPlayer.
la source