SlideShare uma empresa Scribd logo
Clean code
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?

Mais conteúdo relacionado

PDF
PDF
Interface Fluente
PPT
O que é código bonito?
PPTX
Boas práticas e os princípios de qualidade em código
ODP
Paradigmas de programação
PPTX
Lógica de programação, algoritmos e big data
PPTX
Aprendendo a programar - Programação Procedural vs OOP
PPTX
Algoritmos - Paradigmas de Programação
Interface Fluente
O que é código bonito?
Boas práticas e os princípios de qualidade em código
Paradigmas de programação
Lógica de programação, algoritmos e big data
Aprendendo a programar - Programação Procedural vs OOP
Algoritmos - Paradigmas de Programação

Mais procurados (20)

PPT
Aula 1 módulo i - psi
PDF
Design de Interação - SECOMP 2011 - Segundo dia
PPTX
Práticas de Programação em .NET
PPT
Paradigmas de Linguagens de Programacao - Aula #1
PPTX
Lógica de Programação e a magia de codar em qualquer linguagem
PPT
Tdd e projeto_comperio
PPT
Padroes de projetos gof
PDF
Exemplos de Design Patterns em Java
PDF
O que é ser um bom programador?
PDF
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
PDF
Sistemas de Automação I - Interface
PDF
Boas práticas no desenvolvimento de software
PPTX
Design Patterns - Com Java
PPTX
Clean code @rogeriofontes-techfriday-everis
PDF
A Arte do Código Limpo
PPT
Paradigmas De Linguagem De Programação.
PDF
Paradigmas de programação
PPT
Apresentação PAPs Electrónica, Automação e Computadores
PDF
01 aula1 habib
PDF
1.1.paradigmas
Aula 1 módulo i - psi
Design de Interação - SECOMP 2011 - Segundo dia
Práticas de Programação em .NET
Paradigmas de Linguagens de Programacao - Aula #1
Lógica de Programação e a magia de codar em qualquer linguagem
Tdd e projeto_comperio
Padroes de projetos gof
Exemplos de Design Patterns em Java
O que é ser um bom programador?
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Sistemas de Automação I - Interface
Boas práticas no desenvolvimento de software
Design Patterns - Com Java
Clean code @rogeriofontes-techfriday-everis
A Arte do Código Limpo
Paradigmas De Linguagem De Programação.
Paradigmas de programação
Apresentação PAPs Electrónica, Automação e Computadores
01 aula1 habib
1.1.paradigmas
Anúncio

Destaque (20)

PDF
Mme m00-003-a
PPTX
Mode de pendry
PPT
musica oriental
PPTX
Mode de pendry
PPTX
Durian's
PPTX
Ecm test review (accel)
PPTX
Mr cox's classroom orientation
PDF
MSU-LEV-2014
PPTX
Energy and heat test review
PDF
25% is our right: examining SC/ST exclusion through budgets in school education
PPTX
8 things i wish i’d known about sports
PPTX
Gravity target lessons accelerated
PPTX
Matter concept check
PPTX
Truss for indeterminacy Check
PPTX
Frame of Struct
PPTX
Registration
PPTX
Intro to Atoms
PDF
Justice under trial: Caste Discrimination in Access to Justice before Special...
PPT
Malaysia (asian cuisine)
Mme m00-003-a
Mode de pendry
musica oriental
Mode de pendry
Durian's
Ecm test review (accel)
Mr cox's classroom orientation
MSU-LEV-2014
Energy and heat test review
25% is our right: examining SC/ST exclusion through budgets in school education
8 things i wish i’d known about sports
Gravity target lessons accelerated
Matter concept check
Truss for indeterminacy Check
Frame of Struct
Registration
Intro to Atoms
Justice under trial: Caste Discrimination in Access to Justice before Special...
Malaysia (asian cuisine)
Anúncio

Semelhante a Clean code (20)

PPTX
Clean Code - Fork In Tuba
PDF
Princípios de Programação Orientada a Objetos Solid, dry e kiss
PPT
Python tdc2019
PPT
Programação Pragmática
PPTX
Clean Code (Robert C. Martin)
PDF
PHPZEIRO: Adote um framework
PDF
Um desenvolvedor com princípios SOLID
PDF
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
ODP
Lapidando ruby
PDF
Objects calisthenics - Os 10 mandamentos do rei do código
PDF
Código limpo php
PPTX
Clean Code
PPT
Test-Driven Development - Introdução ao método de construção de software guia...
PDF
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
PDF
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
PPTX
Test driven development
PPTX
Code Smells
PDF
Forms101
PDF
Forms Usability 101
PDF
POO2-Pre-32-PadroesProjetos_.pdf
Clean Code - Fork In Tuba
Princípios de Programação Orientada a Objetos Solid, dry e kiss
Python tdc2019
Programação Pragmática
Clean Code (Robert C. Martin)
PHPZEIRO: Adote um framework
Um desenvolvedor com princípios SOLID
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Lapidando ruby
Objects calisthenics - Os 10 mandamentos do rei do código
Código limpo php
Clean Code
Test-Driven Development - Introdução ao método de construção de software guia...
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Test driven development
Code Smells
Forms101
Forms Usability 101
POO2-Pre-32-PadroesProjetos_.pdf

Mais de Lucas Boeing Scarduelli (7)

PDF
Elastic Meetup - Como utilizamos ELK em Cloud para coletar dados de clientes ...
PDF
Workshop: Construindo uma API RESTFul com Spring Boot
PDF
Curso Básico Android - Aula 05
PDF
Curso Básico Android - Aula 04
PDF
Curso Básico Android - Aula 03
PDF
Curso Básico Android - Aula 02
PDF
Curso Básico Android - Aula 01
Elastic Meetup - Como utilizamos ELK em Cloud para coletar dados de clientes ...
Workshop: Construindo uma API RESTFul com Spring Boot
Curso Básico Android - Aula 05
Curso Básico Android - Aula 04
Curso Básico Android - Aula 03
Curso Básico Android - Aula 02
Curso Básico Android - Aula 01

Último (7)

PPTX
Curso de Windows 11 resumido na prática.pptx
PPTX
Mapeamento de Objeto para Tabela Relacional
PDF
Evolução em código: algoritmos genéticos com PHP
PDF
Dos requisitos ao código: como criar código rastreável em PHP
PDF
Paper_A028_BR_Victor_Enrique_Cavero_Sori (1).pdf
PDF
apresentacao introducao computacao ead.pdf
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
Curso de Windows 11 resumido na prática.pptx
Mapeamento de Objeto para Tabela Relacional
Evolução em código: algoritmos genéticos com PHP
Dos requisitos ao código: como criar código rastreável em PHP
Paper_A028_BR_Victor_Enrique_Cavero_Sori (1).pdf
apresentacao introducao computacao ead.pdf
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO

Clean code