Robert C. Martin (Uncle Bob) definiu Clean Code como “código que foi escrito por alguém que se importa”. Não importa a linguagem — Python, JavaScript, Java, C#. Código pode funcionar corretamente e ainda ser um pesadelo para ler, modificar e manter. E código que ninguém consegue entender se torna um legado temido que ninguém quer tocar, acumula bugs, e eventualmente precisa ser reescrito do zero a um custo enorme. Escrever código limpo desde o início não é perfeccionismo — é pragmatismo de longo prazo.
Nomes que revelam intenção
O princípio mais impactante do Clean Code: nomes de variáveis, funções e classes devem revelar o propósito sem necessitar comentários. d como nome de variável é inútil. diasDesdeUltimaAtualizacao é auto-documentado. getX() é genérico demais. calcularTotalComDesconto() é preciso. Cada vez que você salva um nome ruim no código, está criando uma dívida de entendimento que alguém (geralmente você mesmo, daqui a 3 meses) vai pagar com tempo de leitura e confusão.
Evite abreviações que só fazem sentido para você no momento em que está escrevendo: clt para cliente, prod para produto, calc para calculadora ou calculado? Escreva por extenso. Editores modernos com autocompletar tornam nomes longos tão rápidos de digitar quanto curtos — e infinitamente mais legíveis.
Funções pequenas com responsabilidade única
Uma função deve fazer uma coisa, fazer bem, e fazer apenas aquela coisa. Uma função de 200 linhas que verifica autenticação, busca dados no banco, formata o resultado E envia email está fazendo quatro coisas — e sendo difícil de testar, debugar e reutilizar em qualquer uma delas. Quebre em funções menores com nomes descritivos. Uma função de 10 a 20 linhas que você consegue ler de uma vez é ideal.
Um indicador de que uma função está fazendo coisas demais: se você precisar de comentários do tipo “// trata autenticação” e “// busca dados” dentro da mesma função, essas partes deveriam ser funções separadas com esses nomes. Comentários frequentemente são um sintoma de código que precisa ser extraído em funções nomeadas.
Evite comentários desnecessários
Comentários que explicam o óbvio são ruído que cansa quem lê. // incrementa i antes de i++ não adiciona informação. O problema com comentários é que eles envelhecem: o código muda, o comentário fica desatualizado, e agora o comentário ativamente engana. Prefira código que se explica. Use comentários apenas para o “porquê” de uma decisão não óbvia — “usamos esse algoritmo quadrático intencionalmente porque o dataset nunca passa de 20 elementos e o simples é mais legível que o eficiente aqui” é um comentário valioso.
Tratamento de erros limpo
Código de tratamento de erro espalhado por todo o código com if err != nil ou if (result == null) a cada duas linhas mistura a lógica de negócio com tratamento operacional. Use exceções (em linguagens que as suportam) para extrair o tratamento de erro do fluxo principal. O fluxo feliz deve ler como prosa; os tratamentos de erro ficam em blocos catch separados. Nunca engula exceções silenciosamente — catch (Exception e) { } sem nenhuma ação é uma das formas mais eficazes de esconder bugs críticos.
Lei de Demeter: não fale com estranhos
A Lei de Demeter diz que um objeto deve interagir apenas com seus vizinhos diretos — não com os vizinhos dos vizinhos. pedido.getCliente().getEndereco().getCidade() viola essa lei: você está navegando três níveis de relacionamento. Isso cria acoplamento forte — qualquer mudança na estrutura de Endereço ou Cliente quebra esse código. Prefira expor métodos que encapsulam o dado procurado: pedido.getCidadeDoCliente(). Menos acoplamento significa código mais fácil de mudar sem efeitos colaterais inesperados.
Clean Code é uma disciplina, não uma habilidade que se aprende uma vez. Cada code review, cada refactor, cada nova feature é uma oportunidade de deixar o código um pouco melhor do que você encontrou. A regra dos escoteiros aplicada ao código: deixe o acampamento mais limpo do que você encontrou. Desenvolvedores que têm esse hábito são sistemáticamente mais valorizados que técnicos igualmente competentes que deixam rastros de código confuso por onde passam.
Tem um projeto em mente?
Somos especialistas em transformar ideias em produtos digitais. Apps, sites, automações e IA — vamos construir juntos.