SlideShare uma empresa Scribd logo
1 de 20
Código Limpo
Porque fazer uma máquina entender é fácil ;)
Rômulo Massaroth de Farias
romulets
romulomfarias
romulodefarias@gmail.com
Quem lê nosso
código?
Mas o que é código ruim?
• Seu amigo perguntou “o que é isso” mais de uma vez?
• Você foi tomar café e demorou pra voltar a pegar no tranco?
• Você utiliza mais ctrl + F do que ctrl + click?
O que a engenharia de software diz?
• Baixa coesão
• Alto acoplamento
• Code Smells
• Código duplicado
• Classes grandes
• Inveja de responsabilidade
Seu código precisa ser simples.
• Keep It Stupid Simple [KISS]
• Todos com o mínimo de conhecimento devem entender
• Você não escreve para você.
Se preocupe com seu código
• Pense que você é um professor:
• Faça que seus alunos aprendam direito
• E quando pegar alunos de outros professores, melhore-o.
• “Honestidade em pequenas coisas não é coisa pequena”
Principio do escoteiro
Sim, os nomes importam
• Nomes devem ser significativos
• Já parou pra pensar que você lê seu código em voz alta?
• Preste atenção na história que seu código conta
Métodos e Funções
• Faça uma coisa por vez
• Pense pequeno
• Evite contar mentiras no nome dos métodos
• Evite super classes
E os comentários
• Comentários tem tempo de validade, se for para usa-los zele por eles
assim como você zela pelo seu código.
• Um código simples pode falar mais que mil comentários
• Comentários podem facilmente virar mentiras, murmúrios, fofocas
Orientação à objetos
• Use e abuse
• Tenha sua própria toolbox de patterns
• Leia sobre, se interesse. A literatura sobre o tema é riquíssima!
S O L I D
Single Responsibility Principle
• Uma classe deve ter uma, e apenas uma, razão para mudar
• Uma classe deve ter apenas uma responsabilidade
• Uma classe deve ser coesa
Open Closed Principle
• Você deve ser capaz de estender o comportamento de uma classe
sem modifica-la
• Estender o comportamento de uma classe deve ser fácil
• Uma classe deve ser estável
Liskov Substitution Principle
• Classes derivadas devem ser trocáveis por sua classe pai
• Os filhos devem respeitar os contratos estabelecidos pelo pai
• Pré-condições podem ser afrouxadas e pós-condições apertadas
• Evite herança, favoreça composição
Interface Segregation Principle
• Faça interfaces magras específicas para clientes
• Aplique o Single Responsibility Principle em interfaces
• Deixe o filho escolher o que quer ser, não dê responsabilidades
demais á ele!
Dependecy Inversion Principle
• Dependa de abstrações
• Se preocupe apenas com o que é feito, não como é feito
• Injeção de dependência x Fábricas
Muita coisa? Veja melhor com eles!
Código limpo
(Robert C.
Martin)
Orientação a Objetos e
SOLID para Ninjas
(Maurício Aniche)
Muito obrigado!
romulets
romulomfarias
romulodefarias@gmail.com

Mais conteúdo relacionado

Semelhante a Código limpo: principais conceitos e boas práticas

Clean code 101 do caos ao nirvana em poucos passos
Clean code 101  do caos ao nirvana em poucos passosClean code 101  do caos ao nirvana em poucos passos
Clean code 101 do caos ao nirvana em poucos passosGabrielly Gomes
 
Aprensentacao oo-trincheiras
Aprensentacao oo-trincheirasAprensentacao oo-trincheiras
Aprensentacao oo-trincheirasHigor César
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In TubaRafael Paz
 
Princípios de Programação Orientada a Objetos Solid, dry e kiss
Princípios de Programação Orientada a Objetos Solid, dry  e kiss Princípios de Programação Orientada a Objetos Solid, dry  e kiss
Princípios de Programação Orientada a Objetos Solid, dry e kiss DanielChristofolli
 
Aula 13 Comuncação Escrita
Aula 13  Comuncação EscritaAula 13  Comuncação Escrita
Aula 13 Comuncação EscritaLuiz Siles
 
Clean Code - Boas práticas para desenvolvimento
Clean Code - Boas práticas para desenvolvimentoClean Code - Boas práticas para desenvolvimento
Clean Code - Boas práticas para desenvolvimentoPaulo Henrique da Silva
 
Orientação a Objetos - Princípios SOLID
Orientação a Objetos - Princípios SOLIDOrientação a Objetos - Princípios SOLID
Orientação a Objetos - Princípios SOLIDVinicius Quaiato
 
10 dicas para títulos youtube
10 dicas para títulos youtube10 dicas para títulos youtube
10 dicas para títulos youtubeMichael Belmonte
 
Blog de-sucesso
Blog de-sucessoBlog de-sucesso
Blog de-sucessohdhinode
 
Você quer ser um excelente programador  desenvolvedor mas não sabe como começar?
Você quer ser um excelente programador  desenvolvedor mas não sabe como começar?Você quer ser um excelente programador  desenvolvedor mas não sabe como começar?
Você quer ser um excelente programador  desenvolvedor mas não sabe como começar?Eduardo Cauli
 
Ppt aula fgv_excelência_no_atendimento_ao_cliente_prof. randes_12.02.14
Ppt aula fgv_excelência_no_atendimento_ao_cliente_prof. randes_12.02.14Ppt aula fgv_excelência_no_atendimento_ao_cliente_prof. randes_12.02.14
Ppt aula fgv_excelência_no_atendimento_ao_cliente_prof. randes_12.02.14Prof. Randes Enes
 
programming.success - carreira de programador
programming.success - carreira de programadorprogramming.success - carreira de programador
programming.success - carreira de programadorVinícius Krolow
 
Seja um júnior não seja um sobrinho
Seja um júnior não seja um sobrinhoSeja um júnior não seja um sobrinho
Seja um júnior não seja um sobrinhoAlexandre Andrade
 
As 3 partes do TCC
As 3 partes do TCCAs 3 partes do TCC
As 3 partes do TCCSam Kupka
 
OOD - Princípio Open/Closed
OOD - Princípio Open/ClosedOOD - Princípio Open/Closed
OOD - Princípio Open/ClosedPriscila Mayumi
 

Semelhante a Código limpo: principais conceitos e boas práticas (20)

Clean code 101 do caos ao nirvana em poucos passos
Clean code 101  do caos ao nirvana em poucos passosClean code 101  do caos ao nirvana em poucos passos
Clean code 101 do caos ao nirvana em poucos passos
 
Code Smells
Code SmellsCode Smells
Code Smells
 
Redação
RedaçãoRedação
Redação
 
Aprensentacao oo-trincheiras
Aprensentacao oo-trincheirasAprensentacao oo-trincheiras
Aprensentacao oo-trincheiras
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 
Princípios de Programação Orientada a Objetos Solid, dry e kiss
Princípios de Programação Orientada a Objetos Solid, dry  e kiss Princípios de Programação Orientada a Objetos Solid, dry  e kiss
Princípios de Programação Orientada a Objetos Solid, dry e kiss
 
Aula 13 Comuncação Escrita
Aula 13  Comuncação EscritaAula 13  Comuncação Escrita
Aula 13 Comuncação Escrita
 
Clean Code - Boas práticas para desenvolvimento
Clean Code - Boas práticas para desenvolvimentoClean Code - Boas práticas para desenvolvimento
Clean Code - Boas práticas para desenvolvimento
 
Orientação a Objetos - Princípios SOLID
Orientação a Objetos - Princípios SOLIDOrientação a Objetos - Princípios SOLID
Orientação a Objetos - Princípios SOLID
 
10 dicas para títulos youtube
10 dicas para títulos youtube10 dicas para títulos youtube
10 dicas para títulos youtube
 
Blog de-sucesso
Blog de-sucessoBlog de-sucesso
Blog de-sucesso
 
Você quer ser um excelente programador  desenvolvedor mas não sabe como começar?
Você quer ser um excelente programador  desenvolvedor mas não sabe como começar?Você quer ser um excelente programador  desenvolvedor mas não sabe como começar?
Você quer ser um excelente programador  desenvolvedor mas não sabe como começar?
 
O que é ser um bom programador?
O que é ser um bom programador?O que é ser um bom programador?
O que é ser um bom programador?
 
Ppt aula fgv_excelência_no_atendimento_ao_cliente_prof. randes_12.02.14
Ppt aula fgv_excelência_no_atendimento_ao_cliente_prof. randes_12.02.14Ppt aula fgv_excelência_no_atendimento_ao_cliente_prof. randes_12.02.14
Ppt aula fgv_excelência_no_atendimento_ao_cliente_prof. randes_12.02.14
 
programming.success - carreira de programador
programming.success - carreira de programadorprogramming.success - carreira de programador
programming.success - carreira de programador
 
Seja um júnior não seja um sobrinho
Seja um júnior não seja um sobrinhoSeja um júnior não seja um sobrinho
Seja um júnior não seja um sobrinho
 
Netiqueta
NetiquetaNetiqueta
Netiqueta
 
As 3 partes do TCC
As 3 partes do TCCAs 3 partes do TCC
As 3 partes do TCC
 
A Arte do Código Limpo
A Arte do Código LimpoA Arte do Código Limpo
A Arte do Código Limpo
 
OOD - Princípio Open/Closed
OOD - Princípio Open/ClosedOOD - Princípio Open/Closed
OOD - Princípio Open/Closed
 

Código limpo: principais conceitos e boas práticas

  • 1. Código Limpo Porque fazer uma máquina entender é fácil ;)
  • 2. Rômulo Massaroth de Farias romulets romulomfarias romulodefarias@gmail.com
  • 4. Mas o que é código ruim? • Seu amigo perguntou “o que é isso” mais de uma vez? • Você foi tomar café e demorou pra voltar a pegar no tranco? • Você utiliza mais ctrl + F do que ctrl + click?
  • 5. O que a engenharia de software diz? • Baixa coesão • Alto acoplamento • Code Smells • Código duplicado • Classes grandes • Inveja de responsabilidade
  • 6. Seu código precisa ser simples. • Keep It Stupid Simple [KISS] • Todos com o mínimo de conhecimento devem entender • Você não escreve para você.
  • 7. Se preocupe com seu código • Pense que você é um professor: • Faça que seus alunos aprendam direito • E quando pegar alunos de outros professores, melhore-o. • “Honestidade em pequenas coisas não é coisa pequena”
  • 9. Sim, os nomes importam • Nomes devem ser significativos • Já parou pra pensar que você lê seu código em voz alta? • Preste atenção na história que seu código conta
  • 10. Métodos e Funções • Faça uma coisa por vez • Pense pequeno • Evite contar mentiras no nome dos métodos • Evite super classes
  • 11. E os comentários • Comentários tem tempo de validade, se for para usa-los zele por eles assim como você zela pelo seu código. • Um código simples pode falar mais que mil comentários • Comentários podem facilmente virar mentiras, murmúrios, fofocas
  • 12. Orientação à objetos • Use e abuse • Tenha sua própria toolbox de patterns • Leia sobre, se interesse. A literatura sobre o tema é riquíssima!
  • 13. S O L I D
  • 14. Single Responsibility Principle • Uma classe deve ter uma, e apenas uma, razão para mudar • Uma classe deve ter apenas uma responsabilidade • Uma classe deve ser coesa
  • 15. Open Closed Principle • Você deve ser capaz de estender o comportamento de uma classe sem modifica-la • Estender o comportamento de uma classe deve ser fácil • Uma classe deve ser estável
  • 16. Liskov Substitution Principle • Classes derivadas devem ser trocáveis por sua classe pai • Os filhos devem respeitar os contratos estabelecidos pelo pai • Pré-condições podem ser afrouxadas e pós-condições apertadas • Evite herança, favoreça composição
  • 17. Interface Segregation Principle • Faça interfaces magras específicas para clientes • Aplique o Single Responsibility Principle em interfaces • Deixe o filho escolher o que quer ser, não dê responsabilidades demais á ele!
  • 18. Dependecy Inversion Principle • Dependa de abstrações • Se preocupe apenas com o que é feito, não como é feito • Injeção de dependência x Fábricas
  • 19. Muita coisa? Veja melhor com eles! Código limpo (Robert C. Martin) Orientação a Objetos e SOLID para Ninjas (Maurício Aniche)