Ir para o conteúdo
OneKitly

camelCase vs snake_case: guia das convenções de nomenclatura no código

Publicado a 20/06/2025 · 3 min de leitura · Ferramentas para programadores

Daniel Okonkwo

Daniel OkonkwoProgramador front-end e redator de Tecnologia na OneKitly

Desempenho web · Formatos de ficheiro

Verificado a partir de 2 fontes

Ver perfil
Em resumo

camelCase junta as palavras sem espaços e coloca em maiúscula cada palavra exceto a primeira, como firstName. snake_case usa palavras minúsculas unidas por sublinhados, como first_name. PascalCase coloca em maiúscula cada palavra, como FirstName, e kebab-case une palavras minúsculas com hífens, como first-name. A escolha certa é ditada pela sua linguagem e o seu guia de estilo: camelCase para variáveis JavaScript, snake_case para Python, PascalCase para nomes de classes, kebab-case para URLs e CSS.

camelCase, snake_case, PascalCase e kebab-case explicados: como cada um se apresenta, onde é a convenção e como escolher um de forma coerente.

As quatro convenções num relance

As quatro resolvem o mesmo problema: os identificadores não podem conter espaços, por isso os nomes de várias palavras precisam de uma regra de junção. camelCase escreve myUserName, com maiúscula em cada palavra exceto a primeira. PascalCase, também chamado UpperCamelCase, coloca também a primeira palavra em maiúscula, dando MyUserName. snake_case coloca tudo em minúscula e une com sublinhados, my_user_name. kebab-case faz o mesmo com hífens, my-user-name.

As diferenças são puramente estilísticas para um humano, mas não para uma máquina: myUserName e my_user_name são identificadores diferentes. Por isso converter entre convenções tem de ser deliberado, e por isso um desencontro entre o nome de uma coluna de base de dados e o que o seu código espera é uma fonte clássica de erros.

Onde cada convenção é a norma

As convenções são definidas pelas comunidades das linguagens. JavaScript e Java usam camelCase para variáveis e funções, e PascalCase para classes e tipos. Python e Ruby preferem snake_case para variáveis e funções, reservando PascalCase para classes. C# usa PascalCase para métodos e propriedades. kebab-case é raro no código porque os hífens se leem como sinais de menos, mas domina nas URLs, nos nomes de classe CSS e nos atributos HTML.

Um caso especial é a constante. Muitas linguagens escrevem as constantes de compilação em SCREAMING_SNAKE_CASE, um snake_case todo em maiúsculas como MAX_RETRIES. Isto sinaliza de relance que o valor nunca deve mudar, e é um dos poucos lugares onde o snake_case em maiúsculas é idiomático.

Escolher e converter de forma coerente

A regra mais importante é a coerência dentro de uma base de código. Não misture firstName e first_name para o mesmo conceito. Quando atravessa uma fronteira, como ler colunas snake_case de uma base de dados para uma aplicação em camelCase, converta na fronteira, num lugar claramente nomeado, em vez de espalhar conversões por todo o lado.

A conversão é mecânica: divida o nome em palavras e volte a uni-las com a regra de destino. O único ponto delicado é a divisão, porque camelCase não tem separador. Um conversor deteta os limites de palavra em cada maiúscula, enquanto snake_case e kebab-case se dividem pelo seu delimitador, permitindo mover um nome entre dois estilos de forma fiável.

Conversor de caixa (código)Converta identificadores entre camelCase, snake_case, kebab-case, PascalCase e CONSTANT_CASE, um por linha. As séries de maiúsculas são bem separadas: parseHTTPResponse dá parse_http_response.Experimentar a ferramenta

Perguntas frequentes

Qual é a diferença entre camelCase e PascalCase?
Apenas a primeira letra. camelCase começa em minúscula (userName); PascalCase coloca também a primeira palavra em maiúscula (UserName). PascalCase também se chama UpperCamelCase.
Porque é que kebab-case não é usado para nomes de variáveis?
Porque a maioria das linguagens lê o hífen como operador de subtração, portanto first-name seria interpretado como first menos name. É seguro em URLs, CSS e HTML, onde o hífen é apenas um caractere.
Que convenção devo usar para os campos JSON de uma API REST?
Não há uma regra única, mas camelCase e snake_case são ambos comuns. Escolha um, documente-o e mantenha todos os campos da API coerentes para que os clientes possam confiar nele.
Existe um nome para MAIÚSCULAS com sublinhados?
Sim, chama-se SCREAMING_SNAKE_CASE, ou snake case maiúsculo. É a convenção comum para constantes, como MAX_SIZE ou API_KEY.

Artigos que podem interessar-lhe

Todos os guias
ExplicaçãoA cifra de César explicada: como funcionam o deslocamento e o ROT13A cifra de César desloca cada letra por uma quantidade fixa. Saiba como funciona o deslocamento, porque o ROT13 é um caso especial, como codificar e descodificar à mão, e porque a cifra não oferece segurança real hoje.TutorialComo converter JSON para CSV: achatar arrays de objetos em linhas e colunasUm guia prático para transformar um array JSON de objetos num ficheiro CSV limpo, incluindo o achatamento de campos aninhados e os casos-limite.ExplicaçãoO que é um slug de URL? Porquê minúsculas, com hífens e bom para SEOUm slug de URL é a parte legível e com hífens de um endereço web que nomeia uma página. Saiba por que os slugs são minúsculos, como ajudam o SEO e como gerar um a partir de um título.ComparaçãocamelCase, snake_case, kebab-case: qual usar, e porque raramente és tu a escolherAs convenções não são gosto. O hífen é o operador menos, pelo que kebab-case não pode ser um identificador na maioria das linguagens - e é exatamente por isso que o CSS e os URL o usam. Mais a ida e volta com siglas que corrompe nomes em silêncio, e a regra que a corrige.TutorialBases de regex: guia para principiantesUma expressão regular é um padrão para procurar texto. Eis os blocos — classes de caracteres, quantificadores e âncoras — com um exemplo.ExplicaçãoEscapar uma string para JSON: três carateres são obrigatórios, e um é uma armadilhaA RFC 8259 exige escapar exatamente três coisas dentro de uma string JSON. Tudo o resto é facultativo. O que parte mesmo os pipelines é um meio-substituto solto: legal no texto JSON, impossível em UTF-8, e substituído em silêncio assim que os seus dados são escritos.

Ferramentas relacionadas

Fontes

Detetaste um erro neste artigo?