Arquiteto de software
COORDENADOR de pesquisa e desenvolvimento (P&D)
COFUNDADOR DO CONVOQUE.ME - GOLEIROS DE ALUGUEL
PROFESSOR - CEdup Abílio paulo
Técnico em Informática industrial
bacharel em sistemas de informação
Especialista em gerenciamento de projetos
10 anos de experiência EM DESENVOLVIMENTO
8 anos EM desenvolvendo web
lucas boeing scarduelli
scarduelli.com
lucas@scarduelli.com
@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
faculdade
livros
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 linhas
mé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ção
nú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 software
www.agilemanifest.com
manifesto para o artesanato de software
manifesto.softwarecraftsmanship.org
Perguntas?

Clean code