Estou com problemas para entender como aplicar a sintaxe camelCase a alguns dos meus nomes de variáveis.
Por exemplo, como devo escrever corretamente uma palavra como "phonenumber" no caso de camelo? É phoneNumber
ou phonenumber
? Da mesma forma com "nome de usuário", é username
ou userName
?
Eu acho que não parece certo com caixa de camelo, como motorCycle
, passWord
, sunDay
, setUp
ou waveLength
desde que estes são apenas uma palavra cada. Eu acho que pode ser por isso que é chamado, hashMap
mas também hashtable
no caso de camelo sem a capital no último caso, porque hashtable é uma palavra, enquanto hash map é duas palavras.
Mas se a motocicleta tem uma cor, seria motorcycleColor
porque uma palavra é concatenada? Isso está correto ou deveria ser phoneNUmber
, waveLength
, sunBlock
e até mesmo sunDay
para o domingo da semana?
Por que, por exemplo, o método é chamado getISOCountries
enquanto diz, 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
.
username
é o que é, é um sinal de chamada, não o "nome do usuário", por isso é mais como moto do que firstName ou lastName (que deve ser CamelCased)street
deveria ser uma classe ename
um de seus atributos / membros de dados.Respostas:
Você deve colocar a letra em maiúscula depois de onde "normalmente" haveria um espaço (quando você escreveria uma carta em vez de código fonte). Sua primeira suposição está correta:
motorcycle
, nãomotorCycle
.hashMap
, nãohashmap
.sunday
, nãosunDay
.dayOfWeek
, nãodayofweek
.fonte
hashmap
como uma única palavra, embora ironicamente não o façamostree map
. shrughoneyBee
(e nãohoneybee
, de fato, não "abelha", mas "abelha"), ebutterfly
.setUp
caso não endereçado é um caso de ponta, porém, é uma única palavra, masJUnit
historicamente tem o nome de inicialização do dispositivosetUp
.JUnit
tem razão, o resto de nós é o caso da borda. :)tearDown
: DParte 1
Acho que o que mais te incomoda é que alguns de seus exemplos são palavras compostas , enquanto outros não.
As palavras compostas não seguem a notação de camelo para a segunda palavra na palavra composta.
Então é
motorcycle
e nãomotorCycle
.Mas "número de telefone" não é uma palavra composta e iria seguir notação caso camelo. ie
phoneNumber
.E isso leva a:
motorcycleColor
.Se não me lembro se uma palavra é realmente uma palavra composta ou não, procuro no dicionário para ter certeza.
Parte 2
Dois de seus exemplos são um pouco mais complicados.
Eles são complicados porque alguns os escreverão como "hashmap" e "hashtable". De acordo com o dicionário que acabei de verificar, são palavras separadas e não compostas. Portanto, o caso correto de camelo seria
hashMap
ehashTable
. Nem todas as equipes seguem essa convenção; portanto, você precisa perguntar a seus colegas de equipe o que eles preferem e seguir com isso. A consistência é mais importante nesse caso do que o que um dicionário pode dizer que está correto.* Alguns argumentam que o domingo é uma palavra composta, já que outros dias da semana não são, mas, para os fins desta pergunta, evitarei essa questão. É mais fácil tratar como uma palavra composta e, portanto, não é um caso de camelo.
fonte
if (currentDay == thorsDay) {...
Hmm ... as bibliotecas de datas muito ruins não têm essa opção de formatação quando você deseja obter o nome completo do dia da semana.HashMap hashMap = new HashMap();
Como outros já apontaram, o estojo de camelo é usado ao juntar palavras. Não use estojo de camelo em uma única palavra em inglês. O problema vem na determinação de quais compostos são palavras simples. Deixados sozinhos, os programadores tomarão decisões diferentes, dependendo de seus conhecimentos 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 sobre ortografia ou letras maiúsculas. Mesmo assim, se a consistência na nomeação é importante para o seu projeto, não há substituto para a revisão de código.
Escolher uma referência única para o seu projeto resolverá a maioria dos argumentos sobre letras maiúsculas e ortografia. Existem alguns compostos, como o Hashtable, que não estão nos 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". O "Hashtable" da IMO está claramente incorreto; ele nunca aparece como uma única palavra, exceto como um nome em uma API.
fonte
A maneira mais simples de fazer um caso de camelo é no delineamento de palavras.
Exemplos da sua pergunta:
Se você não o dividir em duas palavras, também não deve usar estojo de camelo. Caso contrário, você o está usando em sílabas e em como isso parece bobo
fonte
setup
, enquanto que se você tivesse uma função para configurar algo, ele será chamadosetUp
.wavelength
ouwaveLength
dependendo se o valor em questão está relacionado à velocidade de propagação dividida pela frequência ou se está relacionado ao "comprimento" (não necessariamente à distância) de algum tipo de onda . Por exemplo, a variável de uma biblioteca de síntese de áudio para o número de amostras associadas a uma onda não seriawavelength
maswaveLength
.WaveLength
por si só, seria um pouco vago em qualquer um dos cenários mais simplistas [se refere ao tamanho do buffer ou ao comprimento da seção de looping], mas as palavras poderiam perfeitamente aparecer em um nome mais longo.É aqui que uma complicação com o inglês comum atrapalha a maneira como alguém mais tarde abusa do inglês para se ajustar às regras de espaço em branco dos tokens em contextos de programação.
Das palavras de exemplo que você dá, quase todas são compostas. O domingo não é, pois, embora tenha se originado como composto, fazia tanto tempo que dificilmente pode ser considerado um agora, especialmente porque o fato de se dedicar ao sol é mais uma curiosidade histórica do que uma parte forte da cultura religiosa e cultural. perspectiva das pessoas que falam inglês.
E em inglês, as três principais maneiras 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 determinadas situações, não há realmente muitas regras firmes para saber qual forma é usada para um determinado composto, além de ver o que as outras pessoas fazem, e ainda há momentos em que você vai encontrar dois ou até mesmo três formas ( eggbeater , eggbeater e batedor de ovos , por exemplo).
Aqui, o número de telefone é quase sempre escrito aberto, portanto deve ser tratado como duas palavras.
E quando se interpõe um limite entre maiúsculas e minúsculas para formar um token, o espaço ou hífen é removido e a segunda e subsequente palavra escrita em maiúsculas, portanto
phoneNumber
ouPhoneNumber
conforme apropriado para sua convenção.O que faz
phoneNumber
parecer estranho é provavelmente o fato de ser mais comumente dado comophone
na maioria dos contextos, ou comonumber
quando o contexto é sobre uma conexão telefônica.fonte
Garanta a consistência dentro do arquivo de código.
Promova a consistência dentro do projeto de código.
Prefira consistência na biblioteca de códigos.
A composição de palavras para representar conceitos muda à medida que nos familiarizamos com uma dada aglutinação .
Por exemplo...
Observe que o verificador ortográfico StackExchange não consegue se decidir. 'Número de telefone' no final da frase acima estava bom, mas sinaliza o número no início da frase (em maiúscula ou não).
Por mais que todos desejem que haja "um caminho certo" para fazer as coisas, quando se trata de linguagem, isso nunca pode ser. Quando você terminar seu projeto, o uso provavelmente terá mudado. Certamente sua compreensão terá mudado e a funcionalidade do método / et.al. provavelmente também mudou. (Nesse caso, você provavelmente deve alterar o nome adequadamente.)
fonte
De uma perspectiva estritamente técnica (EUA), em que xxx-yyy-zzzz é o que você normalmente considera um "número de telefone", a parte xxx é adequadamente referida como o código de área, a parte yyy é adequadamente denominada troca e o zzzz é referido corretamente como o número.
Como "número de telefone" não é apenas uma palavra composta (ainda), mas se ela se tornar uma, fará referência incorreta a algo fora da intenção de seu criador, eu diria que a sintaxe camelCase exigiria phoneNumber para qualquer variável que a referencie, mas se você fará qualquer coisa com o sistema telefônico real, eu usaria phoneExchangeNumber para os sete dígitos e phoneACExchangeNumber para as versões de dez dígitos.
fonte