Eu tenho uma dúvida sobre o CamelCase. Suponha que você tenha este acrônimo:Unesco = United Nations Educational, Scientific and Cultural Organization.
Você deve escrever: unitedNationsEducationalScientificAndCulturalOrganization
Mas e se você precisar escrever a sigla? Algo como:
getUnescoProperties();
É certo escrever dessa maneira? getUnescoProperties() OR getUNESCOProperties();
coding-style
camelcasing
acronym
gal007
fonte
fonte
get_unesco_properties
ouget_u_n_e_s_c_o_properties
?Respostas:
Alguns diretrizes sobre as quais a Microsoft escreveu
camelCase
são:Resumindo:
Quando você usar uma abreviação ou sigla com dois caracteres, coloque-as todas em maiúsculas;
Quando a sigla tiver mais de dois caracteres, use maiúscula para o primeiro caractere.
Portanto, no seu caso específico,
getUnescoProperties()
está correto.fonte
ID
em vezId
(que eu uso / ver em todos os lugares)XMLHttpRequest()
originalmente vieram da Microsoft.Existem críticas legítimas aos conselhos da Microsoft a partir da resposta aceita.
playerID
vsplayerId
vsplayerIdentifier
.USTaxes
vsusTaxes
USID
vsusId
(ouparseDBMXML
no exemplo da Wikipedia).Então, postarei esta resposta como uma alternativa à resposta aceita. Todas as siglas devem ser tratadas de forma consistente; siglas devem ser tratadas como qualquer outra palavra. Citando a Wikipedia :
Então, re: pergunta do OP, eu concordo com a resposta aceita; isto está certo:
getUnescoProperties()
Mas acho que chegaria a uma conclusão diferente nesses exemplos:
US Taxes
→usTaxes
Player ID
→playerId
Portanto, vote nesta resposta se você acha que acrônimos de duas letras devem ser tratados como outros acrônimos.Camel Case é uma convenção, não uma especificação. Então eu acho que as regras de opinião popular.( EDIT: Removendo esta sugestão de que os votos deveriam decidir esse problema; como @Brian David diz; o Stack Overflow não é um "concurso de popularidade" e essa pergunta foi encerrada como "baseada em opiniões")
Embora muitos prefiram tratar siglas como qualquer outra palavra, a prática mais comum pode ser colocar siglas em maiúsculas (mesmo que isso leve a "abominações")
Outros recursos:
fonte
USTaxes
ePlayerId
; camelCase:usTaxes
eplayerId
. 3) SeriaUSId
no PascalCase,usId
no camelCase eparseDbmXml
no camelCase.InIN(item)
vsInIn(item)
(dica: IN é polegadas (s)). Ou,IDById(id)
vsIdById(id)
, ciência do contexto (dica: ID significa doença infecciosa). "Dois caracteres" - em que contexto?Primeiro, tenho que esclarecer que não sou um falante nativo de inglês , portanto minha afirmação sobre a gramática inglesa pode simplesmente estar errada. Se você descobrir esses erros, entre em contato e ficarei muito agradecido.
A melhor prática para acrônimo seria evitar o máximo possível. De qualquer forma, esse não é o caso, porque o acrônimo
UNESCO
é mais familiar que o nome completoUnitedNationsEducationalScientificAndCulturalOrganization
.Então, acho que
UNESCO
faz mais sentido do queUnesco
simplesmente porque está mais próximo da forma da vida real, mais familiar. Eu tive alguns problemas para descobrir o que a palavraUnesco
realmente significa.Como outro exemplo, pense
Arc
. Isso soa como uma curva em torno de um círculo, mas em Rust, isso significaAtomically Reference Counted
. Se fosse escrito assimARC
, pelo menos os leitores reconheceriam que a palavra é um acrônimo de outra coisa e não um tipo de curva.Programas modernos são escritos principalmente para leitores humanos. Em seguida, essas regras de nomenclatura devem ser definidas para facilitar a leitura humana vez de processamento ou análise da máquina.
Nesta perspectiva, perdemos um pouco de legibilidade usando o
Unesco
excesso,UNESCO
sem ganhar nada.E para outros casos, acho que apenas seguir regras (ou convenções) simples de acrônimos em inglês é suficiente para a maioria dos casos, para melhor legibilidade .
fonte
Para converter para o CamelCase, também existe o algoritmo de caso Camel (quase) determinístico do Google :
Nos exemplos a seguir, "Solicitação XML HTTP" foi transformada corretamente em XmlHttpRequest, XMLHTTPRequest está incorreto.
fonte
getUnescoProperties()
deve ser a melhor solução ...Quando possível, basta seguir o puro
camelCase
; quando você tiver acrônimos, deixe-os em maiúsculas, quando possível, caso contráriocamelCase
.Geralmente, no OO, as variáveis de programação devem começar com letra minúscula (
lowerCamelCase
) e a classe com letra maiúscula (UpperCamelCase
).Em caso de dúvida, basta ir puro
camelCase
;)parseXML
está bem,parseXml
também estácamelCase
XMLHTTPRequest
Se houverXmlHttpRequest
ouxmlHttpRequest
não um caminho a seguir com acrônimos maiúsculos subsequentes, definitivamente não está claro para todos os casos de teste.por exemplo, como é que você lê esta palavra
HTTPSSLRequest
,HTTP + SSL
ouHTTPS + SL
(isso não significa nada, mas ...), nesse caso follow caso camelo convenções e ir parahttpSslRequest
ouhttpsSlRequest
, talvez já não é agradável, mas é definitivamente mais clara.fonte
HTTPSSL
exemplo, embora SL não signifique nada, que tal algo como HTTPSSHTunnel? É HTTPS + SH (shell) ou HTTP + SSH? A convenção do Google é definitivamente menos ambígua.Há o Guia de Estilo JavaScript do airbnb no github com muitas estrelas (~ 57,5k no momento) e guias sobre acrônimos que dizem:
fonte
XMLHTTPRequest
é muito mais legível do queXmlHttpRequest
, certo?httpRequests
é considerado bom, masHttpRequests
é ruim. seguindo este princípio então, para XML HTTP Request deve serxmlhttpRequest
???xmlHttpRequest
é mais legível do queXMLHTTPRequest
na minha opinião.Atualmente, estou usando as seguintes regras:
Caso de Capital para siglas:
XMLHTTPRequest
,xmlHTTPRequest
,requestIPAddress
.Caso do camelo por abreviaturas:
ID[entifier]
,Exe[cutable]
,App[lication]
.ID
é uma exceção, desculpe, mas é verdade.Quando vejo uma letra maiúscula, assumo um acrônimo, ou seja, uma palavra separada para cada letra. As abreviaturas não têm palavras separadas para cada letra, então eu uso letras maiúsculas e minúsculas.
XMLHTTPRequest
é ambíguo, mas é um caso raro e não é muito ambíguo, então tudo bem, regras e lógica são mais importantes que a beleza.fonte
O guia de estilo JavaScript Airbnb fala um pouco sobre isso . Basicamente:
Como normalmente leio uma letra maiúscula como uma classe, costumo evitar isso. No final do dia, é tudo preferência.
fonte
Além do que o @valex disse, quero recapitular algumas coisas com as respostas fornecidas para esta pergunta.
Eu acho que a resposta geral é: depende da linguagem de programação que você está usando.
C Sharp
A Microsoft escreveu algumas diretrizes nas quais parece que
HtmlButton
é o caminho certo para nomear uma classe para esses casos.Javascript
O Javascript possui algumas variáveis globais com siglas e as usa em maiúsculas (mas, engraçado, nem sempre de forma consistente), eis alguns exemplos:
encodeURIComponent
XMLHttpRequest
toJSON
toISOString
fonte
onerror
.aviso legal: inglês não é o tom da minha mãe. Mas eu pensei sobre esse problema por um longo tempo, esp ao usar o nó (estilo camelcase) para manipular o banco de dados, pois o nome dos campos da tabela deve ser snakeized, este é o meu pensamento:
Existem 2 tipos de 'acrônimos' para um programador:
tmc and textMessageContainer
, que geralmente aparece como uma variável local.No mundo da programação, todos os acrônimos em linguagem natural devem ser tratados como palavras , os motivos são:
ao programar, devemos nomear uma variável no estilo acrônimo ou no estilo não acrônimo. Portanto, se nomearmos uma função getUNESCOProperties, significa que UNESCO é um acrônimo (caso contrário, não deve ser todas as letras maiúsculas), mas evidentemente,
get
eproperties
não são acrônimos. portanto, devemos nomear essa função como gunescop ou getUnitedNationsEducationalScientificAndCulturalOrganizationProperties , ambos são inaceitáveis.a linguagem natural está evoluindo continuamente, e os acrônimos de hoje se tornarão palavras amanhã , mas os programas devem ser independentes dessa tendência e permanecer para sempre.
a propósito, na resposta mais votada, IO é o acrônimo em linguagem de computador (significa InputOutput), mas não gosto do nome, pois acho que o acrônimo (em linguagem de computador) deve ser usado apenas para nomear uma variável local, mas uma classe / função de nível superior; portanto, InputOutput deve ser usado em vez de IO
fonte
A UNESCO é um caso especial, pois geralmente (em inglês) é lido como uma palavra e não como um acrônimo - como UEFA, RADA, BAFTA e, ao contrário da BBC, HTML, SSL
fonte
Há também outra convenção camelcase que tenta favorecer a legibilidade dos acrônimos usando maiúsculas (
HTML
) ou minúsculas (html
), mas evitando ambos (Html
).Então, no seu caso, você poderia escrever
getUNESCOProperties
. Você também pode escreverunescoProperties
para uma variável ouUNESCOProperties
para uma classe (a convenção para as classes é começar com letras maiúsculas).Essa regra fica complicada se você deseja reunir dois acrônimos, por exemplo, para uma classe chamada XML HTTP Request. Seria começar com maiúscula, mas desde que
XMLHTTPRequest
não seria fácil de ler (? É XMLH TTP Request), eXMLhttpRequest
iria quebrar a convenção camelcase (? É XM Lhttp Request), a melhor opção seria misturar caso:XMLHttpRequest
, que é na verdade, o que o W3C usou . No entanto, o uso desse tipo de nomeação é desencorajado. Neste exemplo,HTTPRequest
seria um nome melhor.Como a palavra oficial em inglês para identificação / identidade parece ser ID, embora não seja um acrônimo, você pode aplicar as mesmas regras.
Esta convenção parece ser bastante popular por aí, mas é apenas uma convenção e não há certo ou errado. Apenas tente seguir uma convenção e verifique se seus nomes são legíveis.
fonte