Convenções de Nomenclatura em Programação — camelCase, snake_case e Além
Abre um código-fonte pela primeira vez e vê getUserName, get_user_name e GetUserName tudo no mesmo ficheiro. Imediatamente, sabe que algo correu mal. As convenções de nomenclatura são uma daquelas coisas que parecem triviais até trabalhar em equipa — aí tornam-se essenciais.
A nomenclatura consistente não é uma questão de preferência pessoal. Trata-se de tornar o código legível para a próxima pessoa que lhe tocar, que muitas vezes é o próprio daqui a seis meses.
Por Que as Convenções de Nomenclatura Importam
Três coisas se desmoronam quando um projeto não tem nomenclatura consistente:
- A legibilidade sofre — Quando os estilos de variáveis mudam a cada poucas linhas, o seu cérebro desperdiça ciclos a analisar o formato em vez de compreender a lógica
- A colaboração da equipa fragmenta-se — Os pull requests tornam-se campos de batalha sobre estilo em vez de conteúdo. A integração de novos programadores demora mais porque não há um padrão previsível
- As ferramentas deixam de funcionar corretamente — Os linters, autocompletar, geradores de código e ferramentas de refatorização dependem de padrões de nomenclatura previsíveis
A convenção que escolhe importa muito menos do que escolher uma e mantê-la. Um código-fonte com snake_case consistente em todo o lado é infinitamente melhor do que um que mistura três estilos diferentes.
O Guia Completo de Convenções de Nomenclatura
camelCase
A primeira palavra é minúscula e cada palavra subsequente começa com maiúscula. Sem separadores.
// JavaScript / TypeScript
const userName = "Alice";
let itemCount = 42;
function getUserProfile(userId) {
return fetchData(`/users/${userId}`);
}
Onde é usado: JavaScript, TypeScript e Java usam camelCase para variáveis, nomes de funções e métodos. Também é o padrão em Swift para variáveis locais e parâmetros de funções.
PascalCase
Cada palavra começa com maiúscula. Também chamado de UpperCamelCase.
// TypeScript / C#
class UserProfile {
firstName: string;
lastName: string;
}
interface DatabaseConnection {
host: string;
port: number;
}
// Componente React
function NavigationBar({ items }: NavProps) {
return <nav>{/* ... */}</nav>;
}
Onde é usado: C# usa PascalCase para quase tudo público — classes, métodos, propriedades. TypeScript e JavaScript usam para classes, interfaces, aliases de tipo e enums. React obriga PascalCase para nomes de componentes porque JSX precisa de distinguir componentes de elementos HTML.
No Go, PascalCase tem um significado especial: qualquer identificador que começa com maiúscula é exportado (público).
snake_case
Todas as palavras em minúsculas, separadas por underscores.
# Python
user_name = "Alice"
item_count = 42
def get_user_profile(user_id):
return fetch_data(f"/users/{user_id}")
class UserProfile:
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
Onde é usado: Python usa snake_case para praticamente tudo exceto nomes de classes. Ruby segue o mesmo padrão. Rust usa snake_case para variáveis, funções e módulos. Esquemas de base de dados quase universalmente usam snake_case para nomes de tabelas e colunas.
SCREAMING_SNAKE_CASE
Tudo em maiúsculas com underscores. Reservado para constantes e valores que nunca devem mudar.
// Constantes na maioria das linguagens
const MAX_RETRY_COUNT = 3;
const API_BASE_URL = "https://api.example.com";
const DEFAULT_TIMEOUT_MS = 5000;
Onde é usado: Quase todas as linguagens usam SCREAMING_SNAKE_CASE para constantes. O formato todo em maiúsculas é um sinal universal que diz "não reatribua este valor".
kebab-case
Tudo em minúsculas com hífens como separadores.
/* Nomes de classes CSS */
.navigation-bar {
background-color: #1a1a2e;
}
.user-profile-card {
border-radius: 8px;
}
# Flags de CLI
npm install --save-dev eslint
git commit --no-verify
Onde é usado: CSS e HTML favorecem fortemente kebab-case. Slugs de URL usam-no. Ferramentas de linha de comandos e flags seguem-no.
dot.case
Palavras separadas por pontos.
// Nomes de pacotes Java
package com.example.userservice.controllers;
import org.springframework.boot.SpringApplication;
Onde é usado: Nomenclatura de pacotes Java, extensões de ficheiros, chaves de propriedades de configuração em Spring Boot e frameworks similares.
Title Case
Cada palavra principal é capitalizada. Palavras menores como "e", "o" e "de" permanecem em minúsculas.
Onde é usado: Cabeçalhos de interface, títulos de páginas, itens de menu, secções de documentação e nomes próprios.
path/case
Palavras separadas por barras, seguindo convenções do sistema de ficheiros ou namespaces.
Onde é usado: Caminhos do sistema de ficheiros, caminhos de módulos, hierarquias de namespaces e estruturas de encaminhamento de URLs.
Tabela de Convenções por Linguagem
| Linguagem | Variáveis / Funções | Classes / Tipos | Constantes | Ficheiros |
|---|---|---|---|---|
| JavaScript / TypeScript | camelCase | PascalCase | SCREAMING_SNAKE_CASE | kebab-case ou camelCase |
| Python | snake_case | PascalCase | SCREAMING_SNAKE_CASE | snake_case |
| Go | camelCase (não exportado) | PascalCase (exportado) | PascalCase ou ALL_CAPS | snake_case |
| Rust | snake_case | PascalCase | SCREAMING_SNAKE_CASE | snake_case |
| Java | camelCase | PascalCase | SCREAMING_SNAKE_CASE | PascalCase |
| C# | camelCase (privado) | PascalCase (público) | PascalCase | PascalCase |
| Ruby | snake_case | PascalCase | SCREAMING_SNAKE_CASE | snake_case |
| CSS | kebab-case | — | — | kebab-case |
| SQL | snake_case (colunas) | — | MAIÚSCULAS (palavras-chave) | snake_case |
| PHP | camelCase | PascalCase | SCREAMING_SNAKE_CASE | PascalCase |
Erros Comuns e Como Corrigi-los
1. Misturar convenções no mesmo âmbito
// ❌ Inconsistente
const user_name = "Alice";
const itemCount = 42;
const MaxRetries = 3;
// ✅ camelCase consistente
const userName = "Alice";
const itemCount = 42;
const maxRetries = 3;
2. Usar a convenção errada para a linguagem
# ❌ Usar camelCase em Python
def getUserProfile(userId):
userName = fetchUser(userId)
return userName
# ✅ Usar snake_case como Python espera
def get_user_profile(user_id):
user_name = fetch_user(user_id)
return user_name
3. Abreviaturas e acrónimos
// ❌ Tratamento inconsistente de acrónimos
const XMLParser = new XmlParser();
const htmlToJSON = convert(HTMLString);
// ✅ Tratar acrónimos como palavras
const xmlParser = new XmlParser();
const htmlToJson = convert(htmlString);
4. Nomes booleanos sem prefixos is/has/can
// ❌ Booleano ambíguo
const active = true;
// ✅ Intenção clara do booleano
const isActive = true;
Conversão Automática Entre Convenções
Quando trabalha entre linguagens, converter manualmente as convenções de nomenclatura é tedioso e propenso a erros.
O nosso Conversor de Casos de Texto trata disso automaticamente. Cole qualquer identificador e converta-o entre camelCase, PascalCase, snake_case, kebab-case e mais com um único clique.
Leituras Adicionais
- Melhores Práticas de Formatação JSON — Estruture os seus dados tão limpos como nomeia as suas variáveis
- Guia Rápido de Regex — Referência de correspondência de padrões para validação e processamento de texto
- Melhores Práticas de Formatação SQL — Escreva consultas SQL legíveis
Pronto para converter convenções de nomenclatura automaticamente? Experimente o nosso Conversor de Casos de Texto — cole qualquer identificador e transforme-o entre camelCase, snake_case, PascalCase, kebab-case e mais. Sem registo, sem dados enviados para servidores, completamente grátis.