CamelCase

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
CamelCase

CamelCase é a denominação em inglês para a prática de escrever palavras compostas ou frases, onde cada palavra é iniciada com Maiúsculas e unidas sem espaços.[1] É um padrão largamente utilizado em diversas linguagens de programação, como Java, C#, Ruby, PHP e Python, principalmente nas definições de Classes e Objetos. [2][3] Pela sua associação com tecnologia, o marketing se apropriou dessa maneira de escrever, injetando certo ar de "tecnologia" nos produtos assim nomeados: iPod, eBay, GameCube, OpenOffice.org, StarCraft, dentre outros[4][1].

A provável origem do termo é a semelhança do contorno de expressões CamelCase, onde as letras em maiúsculo "saltam" no meio das minúsculas como corcovas de um camelo.

A primeira letra de uma palavra composta por CamelCase pode ou não ser capitalizada, não há consenso sobre a maneira certa de sua utilização. Existem duas formas de classificá-la: a primeira é conhecida como UpperCamelCase (de letra inicial maiúscula, também conhecida como PascalCase) e a segunda lowerCamelCase (de letra inicial minúscula).[5] Algumas referências quanto ao uso do CamelCase para codificação de programas de computadores ditam que o CamelCase segue a regra que a primeira letra da primeira palavra deve ser escrita em minúscula enquanto que a primeira letra das palavras subsequentes concatenadas devem ser escritas em maiúsculas. Além disso, algumas organizações como, por exemplo, a Microsoft[6], usam o termo CamelCase apenas para as que começam com a inicial minúscula.

Variações[editar | editar código-fonte]

O nome original da prática, usado em estúdios de mídia, gramáticas e no Dicionário Oxford é, em inglês, "medial capitals". Outros nomes como "InterCaps" ou "CamelCase" são relativamente mais recentes e mais comuns em comunidades relacionadas e computadores. Outros sinônimos incluem:

  • BumpyCaps[7] ou BumpyCase
  • NerdCaps[8]
  • camelBack, camel-back ou CamelCaps[9]
  • CapitalizedWords[10] ou CapWords para letras iniciadas em maíusculas em Python      
  • compoundNames[11]
  • Embedded Caps ou Embedded Capitals[12]
  • InterCaps[13] ou intercapping (abreviação de Internal Capitalization)
  • mixedCase para letras iniciadas em minúsculas Python[14]
  • Pascal case (depois da criação da linguagem Pascal)[15][16][17]
  • Smalltalk case[18]
  • WikiWord ou WikiCase[19][20] 
  • HumpBack ou hump-back [21]

Computação e programação[editar | editar código-fonte]

Programação e codificação[22][editar | editar código-fonte]

Por fins de praticidade[23], utiliza-se as regras CamelCase/PascalCase para escrever palavras curtas e anônimos sobre as seguintes normas:

  • Está de acordo com a norma lowerCamelCase palavras compostas iniciadas por letras minúsculas. Usa-se tal. na programação, ao definir variáveis e métodos.
Exemplos: nomeCompleto, valorDesconto, tipoCliente.
  • Está de acordo com a norma UpperCamelCase (que também pode ser chamada de PascalCase) aquelas iniciadas por letras maiúsculas. Usa-se tal, na programação, na definição de Classes em Orientação a objetos.
Exemplos: CalculaDesconto(), ValidaEmail(), ImprimeCadastro().

Além de ser uma boa prática, seu uso é frequentemente obrigatório no mercado. Abaixo, um trecho de código exemplifica o uso dos padrões PascalCase e CamelCase.

int totalContador = 0; /*Uso da lowerCamelCase ao declarar a variável int*/
void ExibirMensagem(string nome) /*Uso da UpperCamelCase ao delcarar a função void*/
{
   string mensagemCompleta = string.format("Olá {0}, você é o visitante de número {1}", nome, totalContador);
   totalContador++;

}

Na programação, também é comum o uso dessa forma de capitalização para manter a compatibilidade com configurações pré-existentes em certas linguagens., Por não serem gerenciáveis, o uso correto da escrita por lowerCamelCase e UpperCamelCase, nesse caso, é obrigatória. Muitas linguagens utilizam esse tipo de formatação devido a diminuição no tempo de reconhecimento de identificadores[24]. A tabela abaixo resume o uso da capitalização e dá exemplos de diferentes tipos de identificadores.

Identificador Linguagem Exemplo de uso
Class Pascal AppDomain
Enum type Pascal ErrorLevel
Interface Pascal IDisposable
Method Pascal ToString
Parameter Camel typeName
Protected instance field Camel redValue

Referências

  1. a b J Richards. «Naming Conventions Used in XBRL Taxonomies» (PDF). Consultado em 20 de novembro de 2012  line feed character character in |título= at position 33 (ajuda)
  2. Catb. «camelCase» (em inglês). Consultado em 08 de janeiro de 2013  Verifique data em: |acessodata= (ajuda)
  3. Computer Hope. «CamelCase» (em inglês). Consultado em 08 de janeiro de 2013  Verifique data em: |acessodata= (ajuda)
  4. R P Santos e R P M Fortes. «Interação com Wikis por meio de Mensageiros Instantâneos» (PDF). Consultado em 20 de novembro de 2012 
  5. «Style Guide - Naming Conventions - Scala Documentation». docs.scala-lang.org. Consultado em 7 de maio de 2017 
  6. «Capitalization Styles». msdn.microsoft.com (em inglês). Consultado em 7 de maio de 2017 
  7. «The Semicolon Wars » American Scientist». www.americanscientist.org (em inglês). Consultado em 7 de maio de 2017 
  8. «The Semicolon Wars » American Scientist». www.americanscientist.org (em inglês). Consultado em 7 de maio de 2017 
  9. «CamelCase - Everything2.com». everything2.com (em inglês). Consultado em 7 de maio de 2017 
  10. «PEP 8 -- Style Guide for Python Code». legacy.python.org (em inglês). Consultado em 7 de maio de 2017 
  11. «PEP 8 -- Style Guide for Python Code». legacy.python.org (em inglês). Consultado em 7 de maio de 2017 
  12. «[APF-1088] If class name has embedded capitals, AppGen code fails UI tests, and generated hyperlinks are incorrect. - AppFuse JIRA». issues.appfuse.org. Consultado em 7 de maio de 2017 
  13. Iverson, Cheryl, et al. (eds) (2007). AMA Manual of Style (10th ed.). Oxford, Oxfordshire: Oxford University Press. ISBN 978-0-19-517633-9.
  14. «PEP 8 -- Style Guide for Python Code». legacy.python.org (em inglês). Consultado em 7 de maio de 2017 
  15. «History around Pascal Casing and Camel Casing». Brad Abrams (em inglês) 
  16. http://wiki.c2.com/?PascalCase
  17. «Pascal Case». 30 de abril de 2014. Consultado em 7 de maio de 2017 
  18. «Smaltak Case». http://wiki.c2.com/?SmalltalkCaseStatement. 18 de abril de 2014 
  19. «WikiWord < TWiki < TWiki». twiki.org (em inglês). Consultado em 7 de maio de 2017 
  20. «Wiki Case». 17 de abril de 2017. Consultado em 7 de maio de 2017 
  21. Thacker, Nannette. «ASP Naming Conventions». www.shiningstar.net. Consultado em 7 de maio de 2017 
  22. «Capitalization Styles». msdn.microsoft.com (em inglês). Consultado em 7 de maio de 2017 
  23. Dave Binkley and Marcia Davis and Dawn Lawrie and Christopher Morrell (2009). "To CamelCase or Under_score". IEEE 17th International Conference on Program Comprehension, 2009. ICPC '09. IEEE: 158–167. CiteSeerX 10.1.1.158.9499. In terms of camel-cased identifiers, this has a greater impact on identifiers that include short words and especially acronyms. For example, consider the acronym ID found in the identifier kIOuterIIDPath. Because of the run of uppercase letters, the task of reading kIOuterIIDPath, in particular the identification of the word ID, is more difficult.
  24. Bonita Sharif and Jonathan I. Maletic (2010). "An Eye Tracking Study on camelCase and under_score Identifier Styles"IEEE 18th International Conference on Program Comprehension, 20010. ICPC '10. IEEE: 196–205. (download PDF). An empirical study to determine if identifier-naming conventions (i.e., camelCase and under_score) affect code comprehension is presented. An eye tracker is used to capture quantitative data from human subjects during an experiment. The intent of this study is to replicate a previous study published at ICPC 2009 (Binkley et al.) that used a timed response test method to acquire data. The use of eye-tracking equipment gives additional insight and overcomes some limitations of traditional data gathering techniques. Similarities and differences between the two studies are discussed. One main difference is that subjects were trained mainly in the underscore style and were all programmers. While results indicate no difference in accuracy between the two styles, subjects recognize identifiers in the underscore style more quickly.

Ver também[editar | editar código-fonte]

Ligações externas[editar | editar código-fonte]