Clean code
-
Upload
lucas-boeing-scarduelli -
Category
Software
-
view
85 -
download
1
Transcript of Clean code
![Page 1: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/1.jpg)
![Page 2: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/2.jpg)
Arquiteto de softwareCOORDENADOR de pesquisa e desenvolvimento (P&D)COFUNDADOR DO CONVOQUE.ME - GOLEIROS DE ALUGUEL
PROFESSOR - CEdup Abílio paulo
Técnico em Informática industrialbacharel em sistemas de informação
Especialista em gerenciamento de projetos
10 anos de experiência EM DESENVOLVIMENTO8 anos EM desenvolvendo web
lucas boeing scarduelli
@LUCASSCARDUELLI
![Page 3: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/3.jpg)
tudo tem um começo!
![Page 4: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/4.jpg)
primeiro de tudo aprenda a pensar
lógica de programação
o difícil é resolver o problema
pergunte sobre tudo
código é a menor parte
![Page 5: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/5.jpg)
o resto entra no loop infinito que é a vida do programador
![Page 6: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/6.jpg)
Estudo
curso técnico
faculdadelivros
tutoriaisprojetos open source
![Page 7: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/7.jpg)
prática
coding dojo trabalho
aula
freelancer
open source
hobby
![Page 8: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/8.jpg)
aprendizadoabsorva o conhecimento
lide melhor com as pessoas
lide com os erros
lide com o fracasso
repita práticas de sucesso
![Page 9: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/9.jpg)
aperfeiçoamento
novas técnicas
novas linguagens
novos domínios
novas tecnologias
aplique o aprendizado
aprenda inglês
![Page 10: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/10.jpg)
o loop infinito!
while programador.estaVivo() {programador.estudar();programador.praticar();programador.cometerErros();programador.aprender();programador.corrigirErros();programador.evoluir();
}
![Page 11: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/11.jpg)
robert c. martin @unclebobmartin
![Page 12: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/12.jpg)
o que é um código limpo?
simples
direto
eficiente
sem duplicidade
elegante
feito com cuidadofácil manutenção
padronizado
poucas dependências
![Page 13: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/13.jpg)
o que é um código limpo?
![Page 14: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/14.jpg)
teoria da janela quebrada
![Page 15: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/15.jpg)
como se mede o quão limpo um código é?
![Page 16: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/16.jpg)
nomes significativos
nos escolhemos nomes para tudo E TEMOS QUE FAZER ISSO BEM FEITO, por isso eles devem nos dizer...
- por que existe- o que faz
- como é usado
![Page 17: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/17.jpg)
devem revelar sua intenção…
![Page 18: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/18.jpg)
devem revelar sua intenção…
![Page 19: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/19.jpg)
devem revelar sua intenção…
![Page 20: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/20.jpg)
devem revelar sua intenção…
![Page 21: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/21.jpg)
devem ser pronunciáveis…
![Page 22: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/22.jpg)
não seja genérico…
![Page 23: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/23.jpg)
não economize nas palavras!
evite a desinformação!
evite palavras que não são palavras
se preciso use varias palavras
evite palavras reservadas
o tipo não precisa estar no nome
evite trocadilhos
use boas praticas
![Page 24: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/24.jpg)
classes e métodos
nomes de classes devem ser substantivos e não conter verbos
Veículo, Pessoa, Cliente, Fornecedor,
Estoque, ...
nomes de métodos devem conter verbos
calculaCusto(), lancaEstoque(),
geraNotaFiscal(), ...
![Page 25: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/25.jpg)
devem ser pequenos
“a primeira regra dos métodos e que eles devem ser
pequenos. a segunda e que devem ser menores ainda.”
(uncle bob)
classes menores são mais fáceis de ler e entender o que
estão fazendo.
classe = 200 a 500 linhasmétodos <= 20 linhas
linhas <= 100 caracteres
![Page 26: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/26.jpg)
métodos devem fazer uma coisa só e fazer certo!
o difícil é definir o que é uma coisa só.
tente extrair parte do código e dar um nome a ele.
![Page 27: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/27.jpg)
métodos devem fazer algo ou responder algo!
os dois juntos causa confusão.
![Page 28: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/28.jpg)
simplifique as estruturas de decisão, evite O hard codE E APROXIME-SE DA MARGEM
![Page 29: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/29.jpg)
simplifique as estruturas de decisão, evite O hard codE E APROXIME-SE DA MARGEM
![Page 30: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/30.jpg)
dry - don’t repeat yourself
evite duplicidade de código! reutilize seus métodos.
![Page 31: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/31.jpg)
srp - princípio da responsabilidade única
uma classe deve ter uma, e somente uma razão para
mudar
![Page 32: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/32.jpg)
classes devem ser coesas
poucas variáveis
cada método deve manipular uma ou mais variáveis quanto mais variáveis um
método consegue manipular, mais coeso ele é
coesão e a co-dependência entre métodos e variáveis
![Page 33: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/33.jpg)
comentários
podem ser mentirosos, mesmo sem intenção
comentários não escondem código ruim
comentário é sinal de necessidade de refatoração
nunca deixe um código comentado
![Page 34: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/34.jpg)
explique-se com código
![Page 35: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/35.jpg)
closing brace comments
![Page 36: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/36.jpg)
comentários podem ser uteis
mostra a intenção por trás de uma decisão tomada
avisa aos desenvolvedores sobre a consequência de um
trecho de código
![Page 37: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/37.jpg)
formatação
formatação é importante para a comunicação
legibilidade é importante para mudanças futuras
métodos com conceitos parecidos devem ficar
verticalmente próximos
ordem dos métodos influencia na legibilidade do
código
![Page 38: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/38.jpg)
indentação
importante para visualização de todo o escopo
não deve ter nível maior que 2, para uma compreensão
fácil e rápida
espaçamento é importante
![Page 39: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/39.jpg)
código hadoooouuuken!!
![Page 40: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/40.jpg)
code smells - fique atento a eles
comentários pobres, obsoletos ou redundantes
métodos mortos ou que fazem muita coisa
código comentado
responsabilidades demais ou fora do contexto
nomes pequenos e inexpressivos
muitos parâmetros ou parâmetros boleanos
despadronizaçãonúmeros mágicos
duplicidade de código
![Page 41: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/41.jpg)
mantenha sempre sua cozinha limpa!
![Page 42: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/42.jpg)
regra do escoteiro
deixe a areá do acampamento mais limpa do que como você encontrou.
![Page 43: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/43.jpg)
manifesto para desenvolvimento ágil de softwarewww.agilemanifest.com
![Page 44: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/44.jpg)
manifesto para o artesanato de softwaremanifesto.softwarecraftsmanship.org
![Page 45: Clean code](https://reader031.fdocument.pub/reader031/viewer/2022021813/589c2d9e1a28ab65248b664d/html5/thumbnails/45.jpg)
Perguntas?