Como escrever um caso de camelo para palavras como “phonenumber”, “motorcycle”, “wavelength”, etc

72

Estou tendo um problema para entender como aplicar a sintaxe camelCase a alguns dos nomes das minhas variáveis.

Por exemplo, como escrever corretamente uma palavra como "phonenumber" no caso do camelo? É phoneNumber ou phonenumber ? Da mesma forma com "username", é username ou userName ?

Acho que não parece certo no caso do camelo, como motorCycle , passWord , sunDay , setUp ou waveLength , pois são apenas uma palavra cada. Eu acho que poderia ser por isso que é chamado hashMap , mas também hashtable no caso do camelo sem o capital no último caso porque hashtable é uma palavra enquanto hash map é duas palavras.

Mas se a motocicleta tiver uma cor, então será motorcycleColor , pois uma palavra é concatenada? Isso está correto ou deveria ser phoneNUmber , waveLength , sunBlock e até sunDay para o domingo da semana?

Por que, por exemplo, o método chamado getISOCountries indica HttpHeaders , por exemplo? não está claro o que se torna minúsculo se tivermos um método como String camelCaseString = dog.toCamelCase() ou interface CamelCase .

Relacionados: link

    
por Niklas Rosencrantz 24.02.2014 / 18:10
fonte

7 respostas

168

Você deve colocar a letra em maiúscula depois de onde "normalmente" haveria um espaço (quando você escreveria uma letra em vez de um código fonte). Sua primeira suposição está correta:

  • É uma "motocicleta", não um "ciclo motor", portanto, sua variável deve ser nomeada motorcycle , não motorCycle .
  • É um "mapa hash", por isso você usa hashMap , não hashmap .
  • "Domingo" é uma palavra - > sunday , não sunDay .
  • Embora "dia da semana" seja dayOfWeek , não dayofweek .
por 24.02.2014 / 18:17
fonte
44

Parte 1
Eu acho que o que está te enganando é que alguns dos seus exemplos são palavras compostas , enquanto outras não são.

  • número de telefone // não é uma palavra composta
  • motocicleta // palavra composta
  • comprimento de onda // palavra composta
  • sunblock // palavra composta
  • Domingo // palavra composta *
  • cor da motocicleta // palavra composta usada com uma palavra não composta.

Palavras compostas não seguem a notação de caso de camelo para a segunda palavra na palavra composta.

Então é motorcycle e não motorCycle .

Mas "número de telefone" não é uma palavra composta e seguiria a notação de caso de camelo. ou seja, phoneNumber .

Isso leva a: motorcycleColor .

Se eu não consigo lembrar se uma palavra é realmente uma palavra composta ou não, eu procuro no dicionário para ter certeza.

Parte 2
Dois dos seus exemplos são um pouco mais complicados.

  • mapa de hash
  • tabela de hash

Eles são complicados porque alguns os soletram como "hashmap" e "hashtable". De acordo com o dicionário que acabei de verificar, são palavras separadas e não uma palavra composta. Portanto, o caso correto de camelo seria hashMap e hashTable . Nem toda equipe segue essa convenção, então você precisa perguntar aos seus colegas de equipe o que eles preferem e depois ficar com isso. Consistência é mais importante neste caso do que o que um dicionário pode dizer que é correto.

* Alguns argumentam que o domingo é uma palavra composta, já que outros dias da semana não são, mas, para os propósitos desta questão, eu vou contornar essa questão. É mais fácil tratar como uma palavra composta e, portanto, nenhum caso de camelo.

    
por 24.02.2014 / 18:30
fonte
8

Como outros apontaram, o caso do camelo é usado quando se junta palavras. Não use o estojo de camelo dentro de uma única palavra em inglês. O problema está em determinar quais compostos são palavras isoladas. Deixados a si mesmos, os programadores tomarão decisões diferentes dependendo de seu conhecimento de inglês. Isso leva a inconsistências na capitalização, que são quase tão irritantes quanto erros de ortografia.

Para evitar isso, os programadores devem usar uma referência padrão (por exemplo, dictionary.com ) quando não tiverem certeza da ortografia ou da capitalização. Mesmo assim, se a consistência na nomenclatura é importante para o seu projeto, não há substituto para a revisão de código.

Escolher uma única referência para seu projeto resolverá a maioria dos argumentos sobre capitalização e ortografia. Existem alguns compostos como Hashtable que não estão em dicionários, mas são capitalizados como palavras únicas nas APIs Java e C #. Você vai querer tomar uma decisão em todo o projeto sobre isso. Em Java, é "HashMap", mas "Hashtable". IMO "Hashtable" está claramente incorreto; nunca aparece como uma única palavra, exceto como um nome em uma API.

    
por 24.02.2014 / 19:18
fonte
4

A maneira mais simples de fazer um caso de camelo é no delineamento de palavras.

Exemplos da sua pergunta:

  • número de telefone: phoneNumber
  • motocicleta: motocicleta
  • domingo: domingo
  • comprimento de onda: comprimento de onda

Se você não o dividisse em duas palavras, você também não deveria usar o case de camelo. Caso contrário, você está usando em sílabas e quão bobo isso parece

  • auxIlIArY (Esta é uma palavra de 5 sílabas; sem mencionar que eu estou parecendo uma porcaria em fontes não monoespaçadas / sem serifas).
por 24.02.2014 / 18:19
fonte
4

É aí que uma complicação com o inglês comum interfere no modo como mais tarde se abusa do inglês para se adequar às regras de espaço em branco de tokens em contextos de programação.

Das palavras de exemplo que você dá, quase todas são compostos. Domingo não é, como quando se originou como um composto, fez tão há muito que mal pode ser considerado um agora, especialmente porque ser dedicado ao sol é mais uma curiosidade histórica do que um parte strong da perspectiva religiosa e cultural das pessoas de língua inglesa.

E em inglês, as três principais formas de escrever um composto são abertas (com um espaço entre as duas palavras), hifenizadas e fechadas (sem espaço ou hífen entre as duas). E embora existam algumas regras sobre a hifenização de compostos abertos em certas situações, não há realmente muitas regras rígidas para saber que forma é usada para um dado composto além de ver o que outras pessoas fazem, e ainda há momentos em que você Encontrarão duas ou até todas as três formas ( eggbeater , egg-beater e egg beater por exemplo).

Aqui, o número de telefone é quase sempre aberto, por isso deve ser tratado como duas palavras.

E quando a interpolação for formando um token, o espaço ou o hífen será removido e a segunda e a subseqüente serão escritas em título, portanto, phoneNumber ou PhoneNumber , conforme apropriado para sua convenção.

O que faz com que phoneNumber pareça estranho é provavelmente que ele seja mais comumente dado como phone na maioria dos contextos, ou como number quando o contexto é sobre uma conexão telefônica.

    
por 25.02.2014 / 12:20
fonte
2

Garantir a consistência no arquivo de código.

Promova a consistência no projeto de código.

Prefere a consistência na biblioteca de códigos.

A composição de palavras para representar conceitos muda à medida que nos tornamos mais familiarizados com uma determinada aglutinação .

Por exemplo ...

  • 'telefone fixo' foi encurtado para apenas 'telefone'
  • 'telefone' foi reduzido para apenas 'telefone'
  • 'número de telefone' foi por vezes contratado em 'número de telefone'
  • 'phone-number' logo se tornou 'phonenumber'
  • "número de telefone" é muitas vezes encurtado para apenas "telefone"
  • 'celular' ou apenas 'celular' estão em uso comum hoje
  • 'homephone' e 'workphone' também podem se tornar comuns em breve

Observe que o verificador ortográfico do StackExchange não pode ser considerado. 'Phonenumber' no final da frase acima foi bom, mas é o que indica o início da frase (maiúscula ou não).

Tanto quanto a maioria das pessoas deseja que haja "um caminho certo" para fazer as coisas, quando se trata de linguagem, isso nunca pode ser. Quando terminar o seu projeto, o uso provavelmente terá mudado. Certamente sua compreensão terá mudado e a funcionalidade do método / et.al. provavelmente terá mudado também. (Nesse caso, você provavelmente deve alterar o nome apropriadamente).

    
por 28.02.2014 / 10:21
fonte
-1

Do ponto de vista estritamente técnico (EUA), onde xxx-yyy-zzzz é o que você normalmente consideraria como um "número de telefone", a parte xxx é adequadamente chamada de código de área, a parte yyy é referida corretamente como a troca, e o zzzz é adequadamente chamado de número.

Como não só o "phonenumber" não é uma palavra composta (ainda), mas se ele se torna um, ele referencia incorretamente algo fora da intenção do seu criador, eu diria que a sintaxe camelCase exigiria phoneNumber para qualquer variável que faça referência a ele , mas se você for fazer alguma coisa com o sistema de telefonia real, usaria phoneExchangeNumber para o número de sete dígitos e phoneACExchangeNumber para as versões de dez dígitos.

    
por 26.05.2017 / 18:26
fonte