O documento apresenta os principais pontos para se escrever código limpo de forma concisa e eficiente, incluindo nomenclatura, classes, métodos, condições, objetos, abstração, comentários, formatação, exceções e testes. O objetivo é promover um mundo com códigos melhores e de mais fácil manutenção.
8. Princípios do Clean Code
Eficiente
Simples
Direto ao ponto
Fácil leitura
Sem dependências
Fácil manutenção
Padrões definidos
Sem duplicação
Coberto de testes
Elegante
9. “Qualquer tolo consegue escrever
código que um computador entende.
Bons programadores escrevem código
que humanos podem entender.”
Martin Fowler
14. “Fiz o meu melhor dentro do tempo que eu tinha.”
“Mas o prazo era extremamente curto.”
“Meu gestor me faz pressão o tempo inteiro.”
“Preciso entregar, preciso ser muito produtivo.”
26. Métodos
Devem ser representados por verbos;
Nome claro ao seu contexto;
Devem ser pequenos. Quanto menor, melhor;
Extraia sempre que puder em métodos auxiliares,
seja um método privado ou utilitários;
27. Métodos
Um método deve fazer apenas uma coisa. Uma;
Argumentos booleanos não costumam ser elegantes.
Muitos parâmetros devem ser substituídos por
objetos.
Não importa que o nome seja grande;
Mantenha o padrão, sempre;
34. Objetos e Estruturas de Dados
Métodos de C;
Objetos criados por M;
Objetos passados por parâmetro para M;
Objetos em propriedades de instâncias de C.
Basicamente devem seguir a Lei de Demeter:
Um método M de uma classe C só deve conhecer:
36. Abstração
Tente ao máximo generalizar suas classes;
Abstraia em quantos níveis for preciso;
Não importa que o nome seja grande;
Mantenha o padrão, sempre;
40. Comentários
Um código bem escrito dispensa comentários;
São aceitáveis quando há necessidade de
explicação do negócio
Também para licença de uso e documentação;
Não importa que o comentário seja grande;
Mantenha o padrão, sempre;
43. Formatação do Código
Não existe um padrão definitivo para formatação;
Defina regras no time;
Tente sempre se basear no padrão que a
comunidade propõe;
Não importa que o padrão seja grande;
Mantenha o padrão, sempre;
45. Exceções
Utilize exceções específicas para seus erros;
Evite códigos de erros;
Trata exceções exclusivamente em métodos;
Não importa que o tratamento seja grande;
Mantenha o padrão, sempre;
49. Testes
Se tiver flexibilidade pra usar o TDD, use;
Se não tiver, implemente testes continuamente a
cada implementação/correção;
Use e abuse; Teste de integração, funcional, etc;
Não importa que o teste seja grande;
Mantenha o padrão, sempre;
50. Testes
Fast: Testes rápidos, resultados rápidos.;
Indepedent: Não deve ter dependências;
Repeatable: Os testes devem funcionar em qualquer ambiente;
Self-validation: Não é necessária nenhuma validação manual;
Timely: Os testes devem ser elaborados antes do código;
Podemos seguir também o “F.I.R.S.T.”:
60. Repositório
Utilize commits pontuais, com pouco código e de
mudanças específicas;
Utilize algum workflow em suas branchs (exemplo
gitflow)
Deixe o seu readme bem explicado, com todas
instruções para executar o projeto;
Deixe o seu contributing bem explicado, com todas
instruções para contribuir com o projeto;
61. Repositório
Utilize tags para marcar suas releases, utilize as
releases do próprio repositório para o changelog
ou crie um arquivo para exibi-lo;
Adicione badges ao seu projeto. Validação de
build/CI, code coverage, etc;
Utilize a parte de issues para relatar bugs ou
solicitar novas features. Tenha um arquivo
explicando como criar uma nova issue.
62. Repositório
Crie uma wiki, use para a documentação;
Tenha um template para a criação de pull-requests;
Configure um resumo e as tags do projeto;
Mantenha todos esses pontos atualizados;
Mantenha o padrão, sempre;
63. Links
Clean Code: Por um Mundo com Códigos Melhores (Esta apresentação)
https://tinyurl.com/cleancode-thiagobarradas
Clean Code: Por um Mundo com Códigos Melhores (Artigo Revista/Online)
Revista iMasters #23 (Agosto 2017) – Páginas 56, 57, 58 e 59
https://issuu.com/imasters/docs/23
Clean Code: Por um Mundo com Códigos Melhores (Artigo Online)
http://barradas.me/2017/06/18/clean-code-um-mundo-codigo-melhores/
64. Referências e Links
Clean Code: A Handbook of Agile Software Craftsmanship
Robert C. Martin (2009) - Book
Clean Code: A Code of Conduct for Professional Programmers
Robert C. Martin (2011) - Book
Clean Code Presentation
Hendrik Ebel (2009) - https://tinyurl.com/cleancode-hendrikebel
Clean Code Presentation
Rodrigo Kono (2013) - https://tinyurl.com/cleancode-rodrigokono