clean code
TRANSCRIPT
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
tudo tem um começo!
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
o resto entra no loop infinito que é a vida do programador
Estudo
curso técnico
faculdadelivros
tutoriaisprojetos open source
prática
coding dojo trabalho
aula
freelancer
open source
hobby
aprendizadoabsorva o conhecimento
lide melhor com as pessoas
lide com os erros
lide com o fracasso
repita práticas de sucesso
aperfeiçoamento
novas técnicas
novas linguagens
novos domínios
novas tecnologias
aplique o aprendizado
aprenda inglês
o loop infinito!
while programador.estaVivo() {programador.estudar();programador.praticar();programador.cometerErros();programador.aprender();programador.corrigirErros();programador.evoluir();
}
robert c. martin @unclebobmartin
o que é um código limpo?
simples
direto
eficiente
sem duplicidade
elegante
feito com cuidadofácil manutenção
padronizado
poucas dependências
o que é um código limpo?
teoria da janela quebrada
como se mede o quão limpo um código é?
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
devem revelar sua intenção…
devem revelar sua intenção…
devem revelar sua intenção…
devem revelar sua intenção…
devem ser pronunciáveis…
não seja genérico…
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
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(), ...
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
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.
métodos devem fazer algo ou responder algo!
os dois juntos causa confusão.
simplifique as estruturas de decisão, evite O hard codE E APROXIME-SE DA MARGEM
simplifique as estruturas de decisão, evite O hard codE E APROXIME-SE DA MARGEM
dry - don’t repeat yourself
evite duplicidade de código! reutilize seus métodos.
srp - princípio da responsabilidade única
uma classe deve ter uma, e somente uma razão para
mudar
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
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
explique-se com código
closing brace comments
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
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
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
código hadoooouuuken!!
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
mantenha sempre sua cozinha limpa!
regra do escoteiro
deixe a areá do acampamento mais limpa do que como você encontrou.
manifesto para desenvolvimento ágil de softwarewww.agilemanifest.com
manifesto para o artesanato de softwaremanifesto.softwarecraftsmanship.org
Perguntas?