Convenções acordadas que reduzem o atrito e permitem a propriedade coletiva.
Padrões de código são acordos da equipe sobre como o código deve ser escrito:
Os padrões permitem a propriedade coletiva. Quando o código tem a mesma aparência em todos os lugares, qualquer pessoa pode ler qualquer código. Não há "tradução" entre o estilo do Bob e o estilo da Alice.
Os padrões também reduzem o atrito na revisão de código. Em vez de debater formatação, você discute lógica e design. As discussões triviais desaparecem.
Sem padrões: Cada arquivo parece diferente. Mover-se entre módulos requer mudança de contexto mental. A revisão de código se torna uma guerra de estilos.
Com padrões: A base de código parece unificada. Ler código desconhecido é mais fácil. As revisões focam no que importa.
O padrão específico importa menos do que ter um padrão. Escolha algo razoável e mantenha-o.
Nem todas as convenções são iguais. Distinga entre:
Padrões semânticos: Afetam o comportamento ou a manutenibilidade do código
Padrões estilísticos: Afetam apenas a aparência
Padrões semânticos merecem discussão. Como a equipe lida com erros é uma decisão significativa com consequências reais.
Padrões estilísticos devem ser automatizados. Use Prettier, Black, gofmt—ferramentas que formatam código automaticamente. Não desperdice tempo humano com tabs vs espaços.
O objetivo é remover atrito, não alcançar algum ideal platônico de estilo de código.
Ferramentas modernas podem aplicar a maioria dos padrões automaticamente:
Formatadores: Prettier (JavaScript), Black (Python), gofmt (Go), rustfmt (Rust)
Linters: ESLint, Pylint, Clippy, RuboCop
Verificadores de tipo: TypeScript, mypy, Flow
Hooks de pré-commit: Husky, pre-commit
Configure uma vez, aplique para sempre. Não confie na disciplina humana—automatize.
A equipe usa Prettier com uma configuração compartilhada. Cada commit aciona a formatação. A revisão de código nunca menciona formatação—apenas foca em lógica e design.
A equipe tem um guia de estilo de 50 páginas. Os revisores gastam metade do tempo apontando violações de estilo. Os desenvolvedores se ressentem das críticas mesquinhas. Novos membros da equipe lutam para aprender todas as regras.
Os padrões podem desencadear opiniões fortes. Evite debates intermináveis:
Comece com convenções existentes. Se a linguagem ou framework tem estilo padrão (Go, Rust), apenas use-o. Não reinvente.
Use padrões da indústria. Configurações populares de linter/formatador (Airbnb ESLint, guia de estilo do Google) são testadas em batalha.
Decida rapidamente, ajuste depois. Escolha algo razoável. Se provar ser problemático, mude. Não bloqueie o progresso esperando pelo padrão perfeito.
Torne democrático mas decisivo. Deixe a equipe votar em questões controversas. A maioria vence. A minoria aceita a decisão.
Lembre-se do objetivo. Os padrões existem para reduzir o atrito, não para expressar preferências. Se uma discussão está demorando muito, qualquer escolha razoável está boa.
Não Otimize Prematuramente
Gastar uma semana debatendo ponto e vírgula não é um bom uso do tempo. Escolha um formatador e siga em frente.
Os padrões devem ser documentados—mas mantenha-os vivos:
O que documentar:
Onde documentar:
Mantenha atualizado. Documentação desatualizada é pior do que nenhuma documentação. Quando você mudar um padrão, atualize os documentos.
Torne fácil de encontrar. Novos membros da equipe devem encontrar os padrões facilmente. Não os enterre em um labirinto de wiki.
A melhor documentação é o próprio código. Se seus padrões são aplicados automaticamente, o código demonstra o que é aceitável.