O código é limpo se puder ser entendido facilmente por todos da equipe. O código limpo pode ser lido e aprimorado por um desenvolvedor que não seja o autor original. Com capacidade de compreensão, vem a legibilidade, a capacidade de mudança, a extensibilidade e a manutenção.
- Siga as convenções padrão.
- Mantenha isso simples, estúpido.
- Mais simples é sempre melhor.
- Reduza a complexidade o máximo possível.
- Regra dos escoteiros.
- Deixe o acampamento mais limpo do que o encontrado.
- Encontre sempre a causa raiz.
- Sempre procure a causa raiz de um problema.
- Mantenha os dados configuráveis em níveis altos.
- Prefira o polimorfismo a if/else ou switch/case.
- Código separado de multi-threading.
- Impedir excesso de configurabilidade.
- Use injeção de dependência.
- Siga a Lei de Demeter.
- Uma classe deve conhecer apenas suas dependências diretas.
- Seja consistente.
- Se você fizer algo de uma certa maneira, faça todas as coisas semelhantes da mesma maneira.
- Use variáveis explicativas.
- Encapsule condições de contorno.
- É difícil acompanhar as condições de contorno.
- Coloque o processamento para eles em um só lugar.
- Prefira objetos de valor dedicado ao tipo primitivo.
- Evite dependência lógica.
- Não escreva métodos que funcionem corretamente, dependendo de outra coisa na mesma classe.
- Evite condicionais negativos.
- Escolha nomes descritivos e inequívocos.
- Faça distinção significativa.
- Use nomes pronunciáveis.
- Use nomes pesquisáveis.
- Substitua números mágicos por constantes nomeadas.
- Evite codificações.
- Não anexe prefixos nem digite informações.
- Pequeno.
- Faça uma coisa.
- Use nomes descritivos.
- Prefira menos argumentos.
- Não tem efeitos colaterais.
- Não use argumentos de flag.
- Divida o método em vários métodos independentes que podem ser chamados do cliente sem o sinalizador.
- Tente sempre se explicar no código.
- Não seja redundante.
- Não adicione ruído óbvio.
- Não use comentários entre chaves.
- Não comente o código. Basta remover.
- Use como explicação da intenção.
- Use como esclarecimento de código.
- Use como aviso de consequências.
- Separe os conceitos verticalmente.
- O código relacionado deve aparecer verticalmente denso.
- Declarar variáveis próximas ao seu uso.
- As funções dependentes devem estar próximas.
- Funções semelhantes devem estar próximas.
- Coloque as funções na direção descendente.
- Mantenha as linhas curtas.
- Não use alinhamento horizontal.
- Use espaço em branco para associar coisas relacionadas e desassociar fracamente relacionadas.
- Não quebre o recuo.
- Esconda a estrutura interna.
- Prefira estruturas de dados.
- Evite estruturas híbridas (meio objeto e metade de dados).
- Deve ser pequeno.
- Faça uma coisa.
- Pequeno número de variáveis de instância.
- A classe base não deve saber nada sobre seus derivados.
- Melhor ter muitas funções do que passar algum código para uma função para selecionar um comportamento.
- Prefira métodos não estáticos a métodos estáticos.
- Uma afirmação por teste.
- Legível.
- Rápido.
- Independente.
- Repetível.
- Rigidez.
- É difícil mudar o software.
- Uma pequena alteração causa uma cascata de alterações subsequentes.
- Fragilidade.
- O software quebra em muitos lugares devido a uma única alteração.
- Imobilidade.
- Você não pode reutilizar partes do código em outros projetos devido aos riscos envolvidos e ao alto esforço.
- Complexidade desnecessária.
- Repetição desnecessária.
- Opacidade.
- O código é difícil de entender.