CamelCase é a denominação em inglês para a prática de escrever as 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.[1][4]

A origem do Camel Case vem da corcova do Camelo. Na imagem o exemplo camelCase está escrita na forma lowerCamelCase

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

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[7]
  • camelBack, camel-back ou CamelCaps[8]
  • CapitalizedWords[9] ou CapWords para letras iniciadas em maiúsculas em Python      
  • compoundNames[9]
  • Embedded Caps ou Embedded Capitals[10]
  • InterCaps[11] ou intercapping (abreviação de Internal Capitalization)
  • mixedCase para letras iniciadas em minúsculas Python[9]
  • Pascal case (depois da criação da linguagem Pascal)[12][13][14]
  • Smalltalk case[15]
  • WikiWord ou WikiCase[16][17] 
  • HumpBack ou hump-back [18]

Computação e programação editar

Programação e codificação editar

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

  • 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 declarar a função ExibirMensagem */
{
   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 preexistentes 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[21]. 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

Ver também editar

Referências

  1. a b J Richards. «Naming Conventions Used in XBRL Taxonomies» (PDF). Consultado em 20 de novembro de 2012 
  2. Catb. «camelCase» (em inglês). Consultado em 8 de janeiro de 2013 
  3. Computer Hope. «CamelCase» (em inglês). Consultado em 8 de janeiro de 2013 
  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. a b «The Semicolon Wars » American Scientist». www.americanscientist.org (em inglês). Consultado em 7 de maio de 2017 
  8. «CamelCase - Everything2.com». everything2.com (em inglês). Consultado em 7 de maio de 2017 
  9. a b c «PEP 8 -- Style Guide for Python Code». legacy.python.org (em inglês). Consultado em 7 de maio de 2017 
  10. «[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 
  11. Iverson, Cheryl, et al. (eds) (2007). AMA Manual of Style (10th ed.). Oxford, Oxfordshire: Oxford University Press. ISBN 978-0-19-517633-9.
  12. «History around Pascal Casing and Camel Casing». Brad Abrams (em inglês) 
  13. http://wiki.c2.com/?PascalCase
  14. «Pascal Case». 30 de abril de 2014. Consultado em 7 de maio de 2017 
  15. «Smaltak Case». 18 de abril de 2014. Consultado em 7 de maio de 2017 
  16. «WikiWord < TWiki < TWiki». twiki.org (em inglês). Consultado em 27 de maio de 2017 
  17. «Wiki Case». 17 de abril de 2017. Consultado em 7 de maio de 2017 
  18. Thacker, Nannette. «ASP Naming Conventions». www.shiningstar.net. Consultado em 7 de maio de 2017 
  19. 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.
  20. «Capitalization Styles». msdn.microsoft.com (em inglês). Consultado em 7 de maio de 2017 
  21. 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.

Ligações externas editar