SlideShare uma empresa Scribd logo
1 de 50
Baixar para ler offline
Código Limpo
@marcelotozzi | www.marcelotozzi.com
marcelotozzidelima@gmail.com | Talk
A cozinha...
O código ruim já te atrapalhou?
Por que ele foi escrito assim?
Bem provável!
Você achou que não teria
tempo pra fazer um bom
trabalho?
Seu chefe ficaria p*** se você
demorasse mais por um bom
código?
Saco cheio daquele código?
Mais coisas pra fazer?
Produto extraordinário.
Vários bugs.
Release apressado.
O código ficou uma zona!
O código ruim acabou com
a empresa!
#comofaz?
+ pessoas.
Não conhecem.
Pressão.
Quanto mais confuso, menor
a #produtividade.
piorar++
Um dia alguém vai ler seu código.
Regra do escoteiro
“Deixe a área do acampamento mais
limpa do que como você a encontrou.”
Nomes significativos
Revele
propósito!
Bons nomes todos
entendem.
Evite informações erradas
Palavras com
significado que
podem desviar do
que desejamos passar.
Um atributo accountList...
E se não for um List?
E se for uma String?
accountList.concat()?
accountList.substring()?
accountList.toLowerCase()?
Nomes de classes
Use substantivos como:
Client, WikiPage, Account...
Evite palavras como:
Manager, Processor, Data, Info...
Não use verbos.
Nomes de métodos
Use verbos:
postPayment, deletePage, save
Métodos de acessos:
get / set / is
Funções
Devem ser
pequenas
Fazer
apenas uma
coisa
•Abstração maior para menor.
•O código deve poder ser narrado.
Evite fazer coisas escondidas
DRY
Comentários
“Não insira
comentários num
código ruim,
reescreva-o.”
Comentários legais
• Licensas de software.
• //TODO’s.
• JavaDoc em APIs Públicas.
Comentários ruins
Históricos de alteração.
Comentários óbvios.
Autoria.
Evite comentários se é
possível usar um método
ou variável.
Estruturas de dados
Lei de Demeter
Você manda o cachorro andar ou as patas?
#Encapsular o comportamento e a
complexidade.
Tratamento de erro
As coisas podem dar #errado!
Use unchecked exception
Aquelas que herdam
de RuntimeException.
Lembra?
Não retorne null
Lance uma exception
Lance um objeto SPECIAL CASE
Testes
O código de teste...
Limpo com nomes significativos.
Evolução, mas sem #porcaria.
Produção fica #flexível.
Os códigos de testes são tão
importantes quanto o código
de produção. Não é um
componente secundário.
Classes
1.Classes devem ser pequenas.
2.Devem ser menores ainda!!!!
Como medir o tamanho de uma classe?
RESPONSABILIDADE!
Cliente
cliente.AvaliarSePodePromoverParaPremium
AvaliadorDeClientePremium
avaliarSePodePromoverParaPremium(cliente)
Sistema
Injeção de Dependência
Desenvolvimento gradual
Esta fedendo, troque!
Obrigado!
:)

Mais conteúdo relacionado

Destaque

기업용 협업 메신저 - Meet talk 서비스 소개서
기업용 협업 메신저 - Meet talk 서비스 소개서 기업용 협업 메신저 - Meet talk 서비스 소개서
기업용 협업 메신저 - Meet talk 서비스 소개서 KJ Park
 
Gossip & Key Value Store
Gossip & Key Value StoreGossip & Key Value Store
Gossip & Key Value StoreSajeev P
 
Key-value databases in practice Redis @ DotNetToscana
Key-value databases in practice Redis @ DotNetToscanaKey-value databases in practice Redis @ DotNetToscana
Key-value databases in practice Redis @ DotNetToscanaMatteo Baglini
 
마더세이프사업 2015년 성과와 2016년 계획
마더세이프사업 2015년 성과와 2016년 계획마더세이프사업 2015년 성과와 2016년 계획
마더세이프사업 2015년 성과와 2016년 계획mothersafe
 
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQL
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQLEstudo comparativo entr bancos RDBMS, NoSQL e NewSQL
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQLOrlando Vitali
 
Top 10 Digital Marketing Companies in Ranchi - Digital Marketing Deal
Top 10 Digital Marketing Companies in Ranchi - Digital Marketing DealTop 10 Digital Marketing Companies in Ranchi - Digital Marketing Deal
Top 10 Digital Marketing Companies in Ranchi - Digital Marketing DealBhanu Garg
 
3.Γ.1 Δυναμική Ομάδων - Βασικές Έννοιες
3.Γ.1 Δυναμική Ομάδων - Βασικές Έννοιες3.Γ.1 Δυναμική Ομάδων - Βασικές Έννοιες
3.Γ.1 Δυναμική Ομάδων - Βασικές ΈννοιεςXristina Drosou
 
Ami corporate update feb 17
Ami corporate update   feb 17Ami corporate update   feb 17
Ami corporate update feb 17AuricoCorporate
 
Sistemas NoSQL, surgimento, características e exemplos
Sistemas NoSQL, surgimento, características e exemplosSistemas NoSQL, surgimento, características e exemplos
Sistemas NoSQL, surgimento, características e exemplosAricelio Souza
 
LSA17: Google Local Search, Past, Present & Future (Google)
LSA17: Google Local Search, Past, Present & Future (Google)LSA17: Google Local Search, Past, Present & Future (Google)
LSA17: Google Local Search, Past, Present & Future (Google)Localogy
 
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados RelacionaisBanco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados Relacionaisalexculpado
 
Investor presentation march 2017
Investor presentation march 2017Investor presentation march 2017
Investor presentation march 2017investorwattswater
 

Destaque (16)

기업용 협업 메신저 - Meet talk 서비스 소개서
기업용 협업 메신저 - Meet talk 서비스 소개서 기업용 협업 메신저 - Meet talk 서비스 소개서
기업용 협업 메신저 - Meet talk 서비스 소개서
 
Gossip & Key Value Store
Gossip & Key Value StoreGossip & Key Value Store
Gossip & Key Value Store
 
Key-value databases in practice Redis @ DotNetToscana
Key-value databases in practice Redis @ DotNetToscanaKey-value databases in practice Redis @ DotNetToscana
Key-value databases in practice Redis @ DotNetToscana
 
마더세이프사업 2015년 성과와 2016년 계획
마더세이프사업 2015년 성과와 2016년 계획마더세이프사업 2015년 성과와 2016년 계획
마더세이프사업 2015년 성과와 2016년 계획
 
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQL
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQLEstudo comparativo entr bancos RDBMS, NoSQL e NewSQL
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQL
 
Top 10 Digital Marketing Companies in Ranchi - Digital Marketing Deal
Top 10 Digital Marketing Companies in Ranchi - Digital Marketing DealTop 10 Digital Marketing Companies in Ranchi - Digital Marketing Deal
Top 10 Digital Marketing Companies in Ranchi - Digital Marketing Deal
 
3.Γ.1 Δυναμική Ομάδων - Βασικές Έννοιες
3.Γ.1 Δυναμική Ομάδων - Βασικές Έννοιες3.Γ.1 Δυναμική Ομάδων - Βασικές Έννοιες
3.Γ.1 Δυναμική Ομάδων - Βασικές Έννοιες
 
Scalable CSS Architecture
Scalable CSS ArchitectureScalable CSS Architecture
Scalable CSS Architecture
 
Franklin resources q1 2017
Franklin resources q1 2017Franklin resources q1 2017
Franklin resources q1 2017
 
Ami corporate update feb 17
Ami corporate update   feb 17Ami corporate update   feb 17
Ami corporate update feb 17
 
Sistemas NoSQL, surgimento, características e exemplos
Sistemas NoSQL, surgimento, características e exemplosSistemas NoSQL, surgimento, características e exemplos
Sistemas NoSQL, surgimento, características e exemplos
 
LSA17: Google Local Search, Past, Present & Future (Google)
LSA17: Google Local Search, Past, Present & Future (Google)LSA17: Google Local Search, Past, Present & Future (Google)
LSA17: Google Local Search, Past, Present & Future (Google)
 
NoSQL: Introducción a las Bases de Datos no estructuradas
NoSQL: Introducción a las Bases de Datos no estructuradasNoSQL: Introducción a las Bases de Datos no estructuradas
NoSQL: Introducción a las Bases de Datos no estructuradas
 
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados RelacionaisBanco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
 
Pengumuman ipdn
Pengumuman ipdnPengumuman ipdn
Pengumuman ipdn
 
Investor presentation march 2017
Investor presentation march 2017Investor presentation march 2017
Investor presentation march 2017
 

Semelhante a Tech Talk Buscapé - Clean Code

Programação Orienta a Objetos - Pense mais, escreva menos e melhor
Programação Orienta a Objetos - Pense mais, escreva menos e melhorProgramação Orienta a Objetos - Pense mais, escreva menos e melhor
Programação Orienta a Objetos - Pense mais, escreva menos e melhorRobson Alécio Somera
 
Princípios Básicos para Desenvolvedores
Princípios Básicos para DesenvolvedoresPrincípios Básicos para Desenvolvedores
Princípios Básicos para Desenvolvedoresguitoper
 
Código limpo: Boas práticas e sua importância no desenvolvimento de software.
Código limpo: Boas práticas e sua importância no desenvolvimento de software.Código limpo: Boas práticas e sua importância no desenvolvimento de software.
Código limpo: Boas práticas e sua importância no desenvolvimento de software.Pedro Edson Silva Barros
 
Escreva Código para Pessoas Além de Máquinas
Escreva Código para Pessoas Além de MáquinasEscreva Código para Pessoas Além de Máquinas
Escreva Código para Pessoas Além de MáquinasThalita Pinheiro
 
Escreva código para pessoas além de máquinas
Escreva código para pessoas além de máquinasEscreva código para pessoas além de máquinas
Escreva código para pessoas além de máquinasEdlaine Zamora
 
TDC2018FLN | Trilha Java - Escrevendo código para pessoas além de máquinas
TDC2018FLN | Trilha Java - Escrevendo código para pessoas além de máquinasTDC2018FLN | Trilha Java - Escrevendo código para pessoas além de máquinas
TDC2018FLN | Trilha Java - Escrevendo código para pessoas além de máquinastdc-globalcode
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In TubaRafael Paz
 
Boas praticas em_desenvolvimento_de_software
Boas praticas em_desenvolvimento_de_softwareBoas praticas em_desenvolvimento_de_software
Boas praticas em_desenvolvimento_de_softwareivanassisleal
 

Semelhante a Tech Talk Buscapé - Clean Code (11)

Programação Orienta a Objetos - Pense mais, escreva menos e melhor
Programação Orienta a Objetos - Pense mais, escreva menos e melhorProgramação Orienta a Objetos - Pense mais, escreva menos e melhor
Programação Orienta a Objetos - Pense mais, escreva menos e melhor
 
Princípios Básicos para Desenvolvedores
Princípios Básicos para DesenvolvedoresPrincípios Básicos para Desenvolvedores
Princípios Básicos para Desenvolvedores
 
Clean code
Clean codeClean code
Clean code
 
Clean Code
Clean CodeClean Code
Clean Code
 
Código limpo: Boas práticas e sua importância no desenvolvimento de software.
Código limpo: Boas práticas e sua importância no desenvolvimento de software.Código limpo: Boas práticas e sua importância no desenvolvimento de software.
Código limpo: Boas práticas e sua importância no desenvolvimento de software.
 
Escreva Código para Pessoas Além de Máquinas
Escreva Código para Pessoas Além de MáquinasEscreva Código para Pessoas Além de Máquinas
Escreva Código para Pessoas Além de Máquinas
 
Escreva código para pessoas além de máquinas
Escreva código para pessoas além de máquinasEscreva código para pessoas além de máquinas
Escreva código para pessoas além de máquinas
 
TDC2018FLN | Trilha Java - Escrevendo código para pessoas além de máquinas
TDC2018FLN | Trilha Java - Escrevendo código para pessoas além de máquinasTDC2018FLN | Trilha Java - Escrevendo código para pessoas além de máquinas
TDC2018FLN | Trilha Java - Escrevendo código para pessoas além de máquinas
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 
Código Limpo
Código LimpoCódigo Limpo
Código Limpo
 
Boas praticas em_desenvolvimento_de_software
Boas praticas em_desenvolvimento_de_softwareBoas praticas em_desenvolvimento_de_software
Boas praticas em_desenvolvimento_de_software
 

Tech Talk Buscapé - Clean Code