Você está na página 1de 45

lucas boeing scarduelli

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
scarduelli.com
lucas@scarduelli.com 10 anos de experiência EM DESENVOLVIMENTO
@LUCASSCARDUELLI 8 anos EM desenvolvendo web
tudo tem um começo!
lógica de programação

o difícil é resolver o problema

primeiro de tudo aprenda a pensar

código é a menor parte

pergunte sobre tudo


o resto entra no loop infinito que é a vida do
programador
curso técnico

livros
faculdade
Estudo

projetos open source tutoriais


coding dojo trabalho

freelancer

prática
aula

open source

hobby
repita práticas de sucesso

lide com o fracasso

absorva o conhecimento aprendizado

lide com os erros

lide melhor com as pessoas


aprenda inglês
novas linguagens

novos domínios

aperfeiçoamento aplique o aprendizado

novas técnicas novas tecnologias


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?
eficiente
simples
elegante
direto

padronizado
sem duplicidade
poucas dependências

fácil manutenção feito com cuidado


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 palavras se preciso use varias
reservadas palavras
o tipo não precisa
estar no nome
use boas praticas
evite palavras que
não são palavras evite trocadilhos

evite a desinformação!
classes e métodos

nomes de classes devem ser


nomes de métodos devem
substantivos e não conter verbos
conter verbos

Veículo, Pessoa,
calculaCusto(),
Cliente, Fornecedor,
lancaEstoque(),
Estoque, ...
geraNotaFiscal(),
...
devem ser pequenos

“a primeira regra dos


métodos e que eles devem ser classes menores são mais
pequenos. a segunda e que fáceis de ler e entender o que
devem ser menores ainda.” estão fazendo.
(uncle bob)

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 tente extrair parte do código


coisa só. 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,


nunca deixe um código
mesmo sem intenção
comentado

comentário é sinal de
comentários não escondem
necessidade de refatoração
código ruim
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

métodos com conceitos


formatação é importante parecidos devem ficar
para a comunicação verticalmente próximos

legibilidade é importante para ordem dos métodos


mudanças futuras influencia na legibilidade do
código
indentação

importante para visualização


de todo o escopo
espaçamento é importante

não deve ter nível maior que


2, para uma compreensão
fácil e rápida
código hadoooouuuken!!
code smells - fique atento a eles

comentários pobres, duplicidade de código


obsoletos ou redundantes
muitos parâmetros ou
nomes pequenos e código comentado parâmetros boleanos
inexpressivos
despadronização
números mágicos
métodos mortos ou que responsabilidades demais ou
fazem muita coisa fora do contexto
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?