Eu odeio siglas. DigitalVersatileDiscPlayeré o caminho a seguir.
Tom Hawtin - tackline
7
+1 a Tom para a piada. Acho essa pergunta útil se "correto" for reinterpretado como "padrão" ou "mais típico". A resposta aceita é ótima!
Jon Coombs
6
Para mim, faz sentido pensar nessas siglas como uma única palavra e, como tal, sigo a convenção e uso DvdPlayer.
Daniel
7
O guia de estilo tem o seguinte a dizer: "Formate uma abreviação como uma palavra se ela fizer parte de um nome de classe mais longo". , assim DvdPlayeré o caminho a percorrer. (E, para Tom, "use palavras inteiras e evite usar abreviações, a menos que a abreviação seja mais amplamente usada que a forma longa".) E acho que "DVD" é mais amplamente usado que "Digital Versatile Disc" :-)
aioobe
Você certamente quis dizer "Discus", não foi? :)
Ville Oikarinen
Respostas:
237
Como parece que a resposta é que não existe um padrão único para isso em Java, gostaria de observar que as Diretrizes de Design do .NET Framework especificam isso.
Agora, antes de me criticar por estar fora do tópico, lembre-se de que as diretrizes de nomenclatura de classe para Java e .NET Framework são bastante semelhantes, o que torna as diretrizes .NET úteis como referência persuasiva.
Regras gerais
Ambas as diretrizes recomendam o uso de siglas apenas quando o acrônimo é amplamente conhecido e bem compreendido. DVD ou XML são excelentes exemplos disso, pois enquanto você os reconhecerá imediatamente, levará um pouco mais para reconhecer a versão expandida.
Abreviações
As Diretrizes do .NET Framework recomendam não usar abreviações (em oposição a siglas), exceto que duas abreviações comuns 'ID' e 'OK' podem ser usadas nos identificadores. Ao usar uma abreviação, o caso misto Idé sempre usado, exceto a primeira palavra de um identificador camelCase (em oposição a um identificador PascalCase).
Em Java, essa convenção é seguida apenas algumas vezes. Veja como as grafias getIDe a mistura getIdestão misturadas na JCL. (Role parcialmente nessa página). Na versão Java 8 , porém, getIdé usado cada vez mais, o que sugere que a convenção PascalCase é preferida atualmente. É melhor evitar as abreviações inteiramente quando possível.
Acrônimos curtos
As Diretrizes do .NET Framework dizem que acrônimos de duas letras como 'IO' devem ter o mesmo caso para ambas as letras. Então, para os identificadores PascalCase (como o nome de uma classe) você obteria DBRate, enquanto para o identificador camelCase (como uma variável local), você pode ter ioChannel.
Definitivamente, essa também parece ser a convenção predominante em Java.
Acrônimos longos
As diretrizes do .NET Framework recomendam que acrônimos de três letras ou mais usem maiúsculas e minúsculas para os identificadores PascalCase e camelCase, exceto a primeira palavra de um identificador camelCase. Assim, para um nome de classe que você possa ter XmlDocument, enquanto uma variável local pode ser nomeada httpRequest.
Esta convenção nem sempre é seguida em Java. Os acrônimos de quatro caracteres costumam usar letras maiúsculas e minúsculas, mas mesmo o JCL não é consistente com acrônimos de três letras. A maioria deles parece estar em maiúscula, como 'URL', 'XML', 'SQL' e 'DOM', mas existem algumas exceções como 'Jar'.
Conclusão
Para Java:
Para acrônimos com mais de 4 letras, use letras maiúsculas e minúsculas. A biblioteca padrão faz isso, e isso faz muito sentido.
Para acrônimos de três letras, você pode usar todas as letras maiúsculas, como a JCL, ou usar maiúsculas e minúsculas, como o .NET Framework. De qualquer maneira, seja consistente.
Para acrônimos de 2 letras, use todas as maiúsculas.
Para abreviações de duas letras, Java realmente não tem um padrão, mas sugiro o uso de maiúsculas e minúsculas, a menos que a consistência com outros nomes faça com que todas as maiúsculas pareçam melhores.
Eu gosto disso, exceto que não é consistente ter CAPS para acrônimos de 3 e 2 letras. (Talvez eu sou muito de um purista, mas ver a resposta aceita por razões práticas Além disso, há o fator de confusão..)
Jon Coombs
1
@ JCoombs: Bem, a inconsistência de duas letras é algo IpAddressque parece terrível para muitas pessoas. Pessoalmente, quando preciso escrever código Java, uso letras maiúsculas e minúsculas para os acrônimos de três letras, deixando apenas as duas letras como um caso especial.
Kevin Cathcart
5
E se o nome da sua classe tiver vários acrônimos adjacentes de duas letras? Independentemente do que você faz, ele vai olhar 'errado' - USGFCharset, UsGfCharset, US_GFCharset ...
Kevin
3
Resposta realmente boa. Mas, pessoalmente, não gosto da idéia das diretrizes do .NET de nomear de maneira diferente, dependendo do tamanho dos acrônimos e se é ou não uma abreviação. Quem realmente se importa e verifica o tamanho de uma sigla? Ou se é uma abreviação? Eu prefiro uma regra geral para nomear. O problema ocorre ao usar bibliotecas de terceiros com convenções diferentes de qualquer regra que você escolher.
Amani Kilumanga
98
Não há resposta "correta". Apenas um conjunto de práticas e convenções que melhor funcionam com suas outras ferramentas.
Por isso eu prefiro DvdPlayer. É mais útil, pois no Eclipse você pode fazer Ctrl+ Shift+ Te selecionar classes pela primeira letra de cada palavra.
(+1) uma boa dica. que responde a pergunta para mim :-)
Asaf
2
Apenas "SIO" é suficiente para encontrar essa classe.
finnw
7
Isso também funciona em outros lugares do Eclipse - preenchimento automático, por exemplo. Tem um método / variável chamado 'myDvdCoverImage'? - digite mDCI Ctrl + Space
teabot
3
também existem alguns atalhos já definidos, como sysout Ctrl + Space, fornece System.out.println. o mesmo vale para (tentar) e (para) #
1050 medopal
50
Eu já vi os dois usados na natureza, e Sun parece seguir o DVDPlayerestilo. Eu prefiro DvdPlayer, porém, porque dessa forma fica claro onde os limites das palavras estão, mesmo que existam várias siglas consecutivas, como em HTTPURLConnection.
Eu acho que "DVDPlayer" torna os limites da palavra mais claros. "Dvd" não é uma palavra, enquanto "DVD" é um acrônimo para as palavras "Digital Versatile Disc". Portanto, os limites reais das palavras em "DVD Player" estão em "D", "V", "D" e "P".
Greg Brown
18
@ GregBrown: Um DVD é um disco com um furo, ninguém, exceto você sabe o nome completo, nem se importa. E é muito mais prático usar o DvdPlayer.
Igor Rodriguez
4
@GregBrown: Na verdade, é mais prático, pelo menos no Eclipse, onde o reconhecimento de casos de camelo é um problema com acrônimos: ou seja, com o DvdPlayer você pode digitar "DP" e pressionar Ctrl + 1 para escolher DvdPlayer, mas se você tinha o DVDPlayer, teria que digitar "DVDP". E é ainda mais irritante se for mais longo. Eu não gostaria de ter um UNESCOConnector no meu código. Enfim, é uma questão de escolha.
Igor Rodriguez
21
Outro bom exemplo é HTTPSID - quis dizer HTTP SID ou HTTPS ID ... Portanto, deve ser escrito HttpSid ou HttpsId, respectivamente, para melhor explicar o significado.
Oz Edri
37
Eu gosto de definir instâncias individuais de classes da seguinte maneira:
Catalogue catalogue;Person person;
Portanto, se eu usasse DVDPlayer, como chamaria uma instância disso? dVDPlayer? Portanto, eu escolheria o DvdPlayernome da classe, para que você possa nomear as instâncias como dvdPlayer.
@ DerFlatulator O que há de errado com isso? Não importa como você veio dvdPlayer, quando voltar, você receberá DvdPlayer.
Maaartinus 23/04
5
@ DerFlatulator: é uma questão de automação ao converter de UpperCamelCase para lowerCamelCase: tive o problema ao automatizar o mapeamento do Hibernate para um snake_case: DvdPlayer -> dvd_playermas DVDPlayer -> d_v_d_player. Não há como automatizar o DVDPlayer para o dvd_player.
Pdem
3
@ DerFlatulator: ok, obrigado pela resposta, funcionou neste caso. Mas ainda estou convencido da notação "DvdPlayer": e o DVDRPGPlayer ?, ele deve ser convertido em dvdRpgPlayer, não em dvdrpgPlayer.
Pdem
2
Considere também seus getters e setters: getDvdPlayer()funciona melhor do que getDVDPlayer(), por exemplo, quando usado com JSP EL (por exemplo, foo.dvdPlayer). E se você estiver nomeando seus getters com minúsculas nos acrônimos, é melhor manter os nomes de suas classes iguais para consistência e previsibilidade.
Daiscog
33
Alguns exemplos das classes JavaSE, apache commons e spring:
Acordado. Apenas seja consistente em sua base de código.
JARC
2
Eu não diria que isso não importa, embora este não seja exatamente um grande problema. Alguns usuários acham os padrões geralmente preferidos muito úteis, mesmo que nem todo mundo seja consistente em segui-los.
Jon Coombs
deve prefiro SRSmais SoftwareRequirementSpecification?
Os nomes das classes devem ser substantivos, em maiúsculas e minúsculas com a primeira letra de cada palavra interna em maiúscula. Tente manter os nomes das classes simples e descritivos. Use palavras inteiras - evite siglas e abreviações (a menos que a abreviação seja muito mais usada do que a forma longa, como URL ou HTML).
Isso realmente não diz nada sobre se deve ser maiúscula ou camel.
DD.
@DD. Eu acho que para mim, "muito mais usado" pontos de usar letras maiúsculas para siglas relevantes (HTTP, GET, etc) do que por alguma palavra aleatória específicas de negócios, como DVD, MRI, MAGA, etc.
goelakash
3
DVDPlayeré o padrão, mas DvdPlayernão é incomum.
Você mais frequentemente do que não vê getId. Provavelmente isso se deve ao fato de o ID ser uma abreviação de "Identity". Na verdade, são as iniciais do documento de identidade.
HttpURLConnectioné frequentemente dado como um exemplo de convenção mista. No entanto, "http" usado como nome de protocolo em uma URL deve estar em letras minúsculas (embora letras maiúsculas sejam geralmente aceitas).
Eu tenho certeza que a maioria das pessoas usa o ID como uma abreviação de Identifier ... ou seja, em um banco de dados, o ID da tabela está se referindo ao identificador da tabela no documento de identidade.
DD.
9
Definitivamente, o DVDPlayer não é o padrão; até o JDK é extremamente inconsistente na abordagem deles.
22710 Kevin Kevin Bourrillion
0
Não há "correto", apenas preferências aqui.
A Sun é consistente na maneira como nomeiam classes que contêm "URL" e "HTML", mas vejo o HTTP usando maiúsculas e minúsculas nos javadocs.
DigitalVersatileDiscPlayer
é o caminho a seguir.DvdPlayer
.DvdPlayer
é o caminho a percorrer. (E, para Tom, "use palavras inteiras e evite usar abreviações, a menos que a abreviação seja mais amplamente usada que a forma longa".) E acho que "DVD" é mais amplamente usado que "Digital Versatile Disc" :-)Respostas:
Como parece que a resposta é que não existe um padrão único para isso em Java, gostaria de observar que as Diretrizes de Design do .NET Framework especificam isso.
Agora, antes de me criticar por estar fora do tópico, lembre-se de que as diretrizes de nomenclatura de classe para Java e .NET Framework são bastante semelhantes, o que torna as diretrizes .NET úteis como referência persuasiva.
Regras gerais
Ambas as diretrizes recomendam o uso de siglas apenas quando o acrônimo é amplamente conhecido e bem compreendido. DVD ou XML são excelentes exemplos disso, pois enquanto você os reconhecerá imediatamente, levará um pouco mais para reconhecer a versão expandida.
Abreviações
As Diretrizes do .NET Framework recomendam não usar abreviações (em oposição a siglas), exceto que duas abreviações comuns 'ID' e 'OK' podem ser usadas nos identificadores. Ao usar uma abreviação, o caso misto
Id
é sempre usado, exceto a primeira palavra de um identificador camelCase (em oposição a um identificador PascalCase).Em Java, essa convenção é seguida apenas algumas vezes. Veja como as grafias
getID
e a misturagetId
estão misturadas na JCL. (Role parcialmente nessa página). Na versão Java 8 , porém,getId
é usado cada vez mais, o que sugere que a convenção PascalCase é preferida atualmente. É melhor evitar as abreviações inteiramente quando possível.Acrônimos curtos
As Diretrizes do .NET Framework dizem que acrônimos de duas letras como 'IO' devem ter o mesmo caso para ambas as letras. Então, para os identificadores PascalCase (como o nome de uma classe) você obteria
DBRate
, enquanto para o identificador camelCase (como uma variável local), você pode terioChannel
.Definitivamente, essa também parece ser a convenção predominante em Java.
Acrônimos longos
As diretrizes do .NET Framework recomendam que acrônimos de três letras ou mais usem maiúsculas e minúsculas para os identificadores PascalCase e camelCase, exceto a primeira palavra de um identificador camelCase. Assim, para um nome de classe que você possa ter
XmlDocument
, enquanto uma variável local pode ser nomeadahttpRequest
.Esta convenção nem sempre é seguida em Java. Os acrônimos de quatro caracteres costumam usar letras maiúsculas e minúsculas, mas mesmo o JCL não é consistente com acrônimos de três letras. A maioria deles parece estar em maiúscula, como 'URL', 'XML', 'SQL' e 'DOM', mas existem algumas exceções como 'Jar'.
Conclusão
Para Java:
Para acrônimos com mais de 4 letras, use letras maiúsculas e minúsculas. A biblioteca padrão faz isso, e isso faz muito sentido.
Para acrônimos de três letras, você pode usar todas as letras maiúsculas, como a JCL, ou usar maiúsculas e minúsculas, como o .NET Framework. De qualquer maneira, seja consistente.
Para acrônimos de 2 letras, use todas as maiúsculas.
Para abreviações de duas letras, Java realmente não tem um padrão, mas sugiro o uso de maiúsculas e minúsculas, a menos que a consistência com outros nomes faça com que todas as maiúsculas pareçam melhores.
fonte
IpAddress
que parece terrível para muitas pessoas. Pessoalmente, quando preciso escrever código Java, uso letras maiúsculas e minúsculas para os acrônimos de três letras, deixando apenas as duas letras como um caso especial.Não há resposta "correta". Apenas um conjunto de práticas e convenções que melhor funcionam com suas outras ferramentas.
Por isso eu prefiro
DvdPlayer
. É mais útil, pois no Eclipse você pode fazer Ctrl+ Shift+ Te selecionar classes pela primeira letra de cada palavra.fonte
Eu já vi os dois usados na natureza, e Sun parece seguir o
DVDPlayer
estilo. Eu prefiroDvdPlayer
, porém, porque dessa forma fica claro onde os limites das palavras estão, mesmo que existam várias siglas consecutivas, como emHTTPURLConnection
.fonte
Eu gosto de definir instâncias individuais de classes da seguinte maneira:
Portanto, se eu usasse
DVDPlayer
, como chamaria uma instância disso?dVDPlayer
? Portanto, eu escolheria oDvdPlayer
nome da classe, para que você possa nomear as instâncias comodvdPlayer
.fonte
DVDPlayer dvdPlayer;
?dvdPlayer
, quando voltar, você receberáDvdPlayer
.DvdPlayer -> dvd_player
masDVDPlayer -> d_v_d_player
. Não há como automatizar o DVDPlayer para o dvd_player.getDvdPlayer()
funciona melhor do quegetDVDPlayer()
, por exemplo, quando usado com JSP EL (por exemplo,foo.dvdPlayer
). E se você estiver nomeando seus getters com minúsculas nos acrônimos, é melhor manter os nomes de suas classes iguais para consistência e previsibilidade.Alguns exemplos das classes JavaSE, apache commons e spring:
HttpURLConnection
HTTPAddress
UrlPathHelper
AopProxy
ISBNValidator
Então - isso realmente não importa.
fonte
SRS
maisSoftwareRequirementSpecification
?Java eficaz parece preferir o DvdPlayer.
fonte
Como outros indicaram, é uma coisa de estilo que difere entre os projetos. Projetos do Google, como Guava e GWT, preferem o
DvdPlayer
estilo.https://google.github.io/styleguide/javaguide.html#s5.3-camel-case
fonte
DvdPlayer
style: google-styleguide.googlecode.com/svn/trunk/...Dos documentos sun java :
fonte
DVDPlayer
é o padrão, masDvdPlayer
não é incomum.Você mais frequentemente do que não vê
getId
. Provavelmente isso se deve ao fato de o ID ser uma abreviação de "Identity". Na verdade, são as iniciais do documento de identidade.HttpURLConnection
é frequentemente dado como um exemplo de convenção mista. No entanto, "http" usado como nome de protocolo em uma URL deve estar em letras minúsculas (embora letras maiúsculas sejam geralmente aceitas).fonte
Não há "correto", apenas preferências aqui.
A Sun é consistente na maneira como nomeiam classes que contêm "URL" e "HTML", mas vejo o HTTP usando maiúsculas e minúsculas nos javadocs.
Pessoalmente, eu prefiro o DvdPlayer.
fonte