clean code clickbus
DESCRIPTION
TRANSCRIPT
![Page 1: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/1.jpg)
What about Clean Code?
Marcelo Santos - @marcelsud
![Page 2: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/2.jpg)
What about Clean Code?“It is not enough for code to work.”
Robert C. Martin (Uncle Bob)
![Page 3: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/3.jpg)
● Código duplicado● Classes longas (se houver)● Parâmetros demais● Falta de testes (ou nenhum)● Falta de Coding Standards● No design patterns at all● Código morto● Alta curva de aprendizado● Uma alteração, vários bugs● Alocação de mais recursos● Elevado custo em manutenção● Queda de produtividade● Perda de performance● Remendos / Gambiarras● ...
Consequências de código ruim
![Page 4: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/4.jpg)
A Regra do Escoteiro
“Deixe a área do acampamento mais limpa do que como você a encontrou”
Boy Scouts of America
![Page 5: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/5.jpg)
![Page 6: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/6.jpg)
![Page 7: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/7.jpg)
![Page 8: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/8.jpg)
Nomes significativos
Como?
● Pronunciáveis● Que revele seu propósito
Onde?
● Variáveis● Métodos
● Parâmetros● Classes
● Namespaces● etc
![Page 9: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/9.jpg)
Nomes ruins
![Page 10: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/10.jpg)
Nomes melhores
![Page 11: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/11.jpg)
Parâmetros demais
Os métodos devem ter um número pequeno de parâmetros. Nenhum é o ideal.
Acima de três é questionável.
![Page 12: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/12.jpg)
Parâmetros demais
![Page 13: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/13.jpg)
Poucos parâmetros
![Page 14: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/14.jpg)
Comentários
![Page 15: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/15.jpg)
Comentários
"Não insira comentários num código ruim, reescreva-o"Brian W. Kernighan e P. J. Plaugher
![Page 16: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/16.jpg)
Não faça isso…
![Page 17: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/17.jpg)
Lembre-se...
Se você precisa esclarecer seu código com um comentário, talvez seja um bom momento para
revê-lo.
![Page 18: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/18.jpg)
Duplicação
DRY: Don’t Repeat Yourself
Sempre que você vir duplicação em código, isso significa que você perdeu uma chance para abstração.
Encontre e elimine duplicações sempre que puder!
![Page 19: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/19.jpg)
Código morto
● Variáveis não utilizadas● Pedaços de código inúteis
● Comentários que não acrescentam informações
Faça a coisa certa: Dê a eles um funeral decente!
![Page 20: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/20.jpg)
Flag Arguments
“Argumentos Booleanos claramente declaram que o método possui mais que uma responsabilidade. Eles
são confusos e devem ser eliminados.”Uncle Bob
![Page 21: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/21.jpg)
Flag Arguments
![Page 22: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/22.jpg)
Flag Arguments
![Page 23: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/23.jpg)
Encapsular condicionais
melhor que...
![Page 24: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/24.jpg)
Substituir números mágicos por constantes
melhor que...
![Page 25: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/25.jpg)
Evitar condicionais negativas
melhor que...
![Page 26: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/26.jpg)
Coding Standards
“Softwares são feitos para ser lidos por humanos, e somenteincidentemente para ser executados por computadores”
H. Abelson and G. Sussman
![Page 27: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/27.jpg)
Tratamento de erros
● Evitar retornar um código de erro● Lançar excessões com contexto
● Não retornar NULL● Utilizar mensagens informativas
![Page 28: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/28.jpg)
Testes unitários
Fast: Devem ser rápidos.Independent: Sem depender uns dos outros e na hora que desejar.Repeatable: Devem passar tanto no servidor, quanto num notebook sem wi-fi.Self-validating: Devem garantir o resultado sem intervenção manual.Timely: Devem ser criados antes do código.
![Page 29: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/29.jpg)
LoD: Law of DemeterDesign by Contract
Design PatternsOrthogonality
CohesionSOLID
Classes
![Page 30: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/30.jpg)
SOLID
SRP: Single responsibility principlea class should have only a single responsibility.
OCP: Open/closed principle“software entities … should be open for extension, but closed for modification”.
LSP: Liskov substitution principle“objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program”
ISP: Interface segregation principle“many client-specific interfaces are better than one general-purpose interface.”
DIP: Dependency inversion principleone should “Depend upon Abstractions. Do not depend upon concretions.”
![Page 31: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/31.jpg)
Classes
KISS: Keep it simple, stupid!
"A perfeição é alcançada não quando não há mais nada para adicionar,mas quando não há mais nada que se possa retirar"
Antoine de Saint-Exupéry, autor de "O Pequeno Príncipe"
Toda complexidade desnecessária deve ser descartada.
![Page 32: Clean code clickbus](https://reader034.vdocuments.net/reader034/viewer/2022052522/546cf6b2af795971298b50e1/html5/thumbnails/32.jpg)
What about Clean Code?
Marcelo Santos - @marcelsud