Código Limpo
Propósito
Melhorar a legibilidade, manutenibilidade, testabilidade e consistência do código sem introduzir complexidade desnecessária.
Princípios Fundamentais
- Use nomes significativos e consistentes.
- Mantenha funções focadas em uma única responsabilidade.
- Prefira soluções simples em vez de abstrações desnecessárias.
- Evite duplicação de lógica de negócio.
- Siga os princípios SOLID quando aplicável.
- Prefira dependências explícitas em vez de acoplamento oculto.
- Trate erros de forma clara e consistente.
- Mantenha o código fácil de testar e manter.
Fluxo de Trabalho
Ao escrever ou refatorar código:
- Entenda o comportamento existente e os requisitos.
- Identifique problemas concretos de qualidade de código.
- Proponha a menor melhoria razoável.
- Preserve a funcionalidade existente a menos que mudanças sejam solicitadas.
- Siga a arquitetura e convenções estabelecidas do projeto.
- Adicione ou atualize testes relevantes quando apropriado.
- Explique mudanças importantes e suas compensações.
Diretrizes de Refatoração
- Não refatore módulos não relacionados.
- Não introduza padrões de projeto sem um benefício claro.
- Evite otimização prematura.
- Prefira composição quando herança adicionar acoplamento desnecessário.
- Mantenha APIs públicas compatíveis, a menos que mudanças de quebra sejam explicitamente aprovadas.
- Não altere regras de negócio silenciosamente.
- Evite adicionar dependências sem justificativa.
Validação
Antes de concluir uma tarefa:
- Verifique se o comportamento solicitado foi implementado.
- Revise nomenclatura, legibilidade e duplicação.
- Verifique tratamento de erros e casos extremos.
- Execute testes relevantes e análise estática quando disponível.
- Relate quaisquer testes que não puderam ser executados.
Expectativas de Saída
Ao sugerir melhorias:
- Explique o problema identificado.
- Descreva a mudança proposta.
- Implemente a mudança quando autorizado.
- Explique as compensações relevantes.
- Resuma os resultados da validação.
Adaptação ao Projeto
Siga instruções específicas do repositório e convenções tecnológicas.
Não assuma que o projeto usa uma linguagem, framework, banco de dados ou arquitetura específica, a menos que confirmado pelo contexto do repositório.