SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
Clean Code 101:
Do caos ao nirvana em poucos passos
Gabrielly Gomes
Consultant Developer @ Thoughtworks
E agora?
É possível realizar melhorias consideráveis
com simples (mas poderosos) ajustes!
Nomes Significativos
• Nomes que digam exatamente o que fazem
• Que façam parte do contexto do problema
• Que sejam pronunciáveis
• Não brinque ou desconte a raiva no seu código!!!
Comentários
• Seu código está legível?
• Comentários são ruins. Ponto.
• Se sentir a necessidade de comentar, pense antes em refatorar
• Comentários são úteis quando algo que foi feito não pode ficar no código por muito tempo, ou
quando algo deve ser feito com urgência
• Não deixe códigos comentados
• Evite fazer comentários //TO DO, provavelmente você nunca mais vai lembrar porque ele está
lá!!! Mas, se fizer, descreva o que deve ser feito
Funções
• Tenha responsabilidade única
• O contrato da sua função deve contar o que faz
• Tenha a menor quantidade de parâmetros possível
• Separe comando e consulta
Já está tratado?
Existem diferentes tipos de code smells
além dos citados anteriormente!
Formatação
• Indentação padronizada facilita a leitura do código como um todo
• Tenha em mente os limites verticais e horizontais
• Utilização de linters como ferramenta de auxílio
Classes
• Manter seus atributos bem encapsulados*
• Seguir o princípio da responsabilidade única
• Funções internas da classe podem necessitar ser refatoradas, e isso pode gerar novas classes!
Tratamento de Erros
• Use exceções
• Forneça exceções com contexto
• Retorne uma exceção ao invés de null
O Código já está OK?
Dicas gerais de como sempre continuar
melhorando seu código!
Reuso de código
• Refatorações podem gerar códigos similares, faça bom proveito disso!
• Quanto menos linhas, menor sua aplicação
• Alterações em códigos reutilizados tornam mais simples a manutenção do sistema
• A boa utilização dos conceitos anteriores deixa fácil para demais pessoas da sua equipe
encontrarem códigos reutilizáveis
Testes
• Triple A: Arrange, Act & Assert
• Tenha um único conceito por teste
• Aproveite bem a etapa de refatoração
SOLID
• Single Responsability Principle
• Open-Close Principle
• Liskov Substitution Principle
• Interface Segregation Principle
• Dependency Inversion Principle
Grady Booch
Um código limpo é simples e direto. Ele é tão bem legível
quanto uma prosa bem escrita. Ele jamais torna confuso o
objetivo do desenvolvedor, em vez disso, ele está repleto
de abstrações claras e linhas de controle objetivas.
“
”
Referências
• Livro “Código Limpo” por Robert C. Martin
• https://sourcemaking.com/refactoring/smells
OBRIGADA!
gabrielly.a.gomes@gmail.com
LinkedIn: https://www.linkedin.com/in/gabrielly-
gomes-362770b0/

Mais conteúdo relacionado

Mais procurados

TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação Icaro Camelo
 
Acelerando a criação de testes usando IntelliTest (Visual Studio Summit 2015)
Acelerando a criação de testes usando IntelliTest (Visual Studio Summit 2015)Acelerando a criação de testes usando IntelliTest (Visual Studio Summit 2015)
Acelerando a criação de testes usando IntelliTest (Visual Studio Summit 2015)Igor Abade
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaRogerio Fontes
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"thiagobapt
 
TDC2016POA | Trilha PHP - Quero ser desenvolvedor PHP. Como me preparar para ...
TDC2016POA | Trilha PHP - Quero ser desenvolvedor PHP. Como me preparar para ...TDC2016POA | Trilha PHP - Quero ser desenvolvedor PHP. Como me preparar para ...
TDC2016POA | Trilha PHP - Quero ser desenvolvedor PHP. Como me preparar para ...tdc-globalcode
 
Vida longa ao legado
Vida longa ao legadoVida longa ao legado
Vida longa ao legadoEduardo Cesar
 
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimentoDevops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimentoThiago Ferreira
 
Falando sobre testes automatizados
Falando sobre testes automatizadosFalando sobre testes automatizados
Falando sobre testes automatizadosBreno Oliveira
 
Suporte a macros na sua aplicação com PowerShell
Suporte a macros na sua aplicação com PowerShellSuporte a macros na sua aplicação com PowerShell
Suporte a macros na sua aplicação com PowerShellIgor Abade
 
Test-driven development & Mocking
Test-driven development & MockingTest-driven development & Mocking
Test-driven development & MockingDaniel Tamiosso
 
Testes e mocks: Em Visual Studio com .NET
Testes e mocks: Em Visual Studio com .NETTestes e mocks: Em Visual Studio com .NET
Testes e mocks: Em Visual Studio com .NETAlessandro Binhara
 
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)Joao Galdino Mello de Souza
 
Como se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoComo se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoFlávio Lisboa
 

Mais procurados (20)

TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação
 
Be React. Do Tests!
Be React. Do Tests!Be React. Do Tests!
Be React. Do Tests!
 
Acelerando a criação de testes usando IntelliTest (Visual Studio Summit 2015)
Acelerando a criação de testes usando IntelliTest (Visual Studio Summit 2015)Acelerando a criação de testes usando IntelliTest (Visual Studio Summit 2015)
Acelerando a criação de testes usando IntelliTest (Visual Studio Summit 2015)
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis Uberlândia
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
 
Teste automatizados e tdd
Teste automatizados e tddTeste automatizados e tdd
Teste automatizados e tdd
 
TDC2016POA | Trilha PHP - Quero ser desenvolvedor PHP. Como me preparar para ...
TDC2016POA | Trilha PHP - Quero ser desenvolvedor PHP. Como me preparar para ...TDC2016POA | Trilha PHP - Quero ser desenvolvedor PHP. Como me preparar para ...
TDC2016POA | Trilha PHP - Quero ser desenvolvedor PHP. Como me preparar para ...
 
Porque PHP?
Porque PHP?Porque PHP?
Porque PHP?
 
O Spring está morto! Viva o Spring!
O Spring está morto! Viva o Spring!O Spring está morto! Viva o Spring!
O Spring está morto! Viva o Spring!
 
Vida longa ao legado
Vida longa ao legadoVida longa ao legado
Vida longa ao legado
 
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimentoDevops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
 
Falando sobre testes automatizados
Falando sobre testes automatizadosFalando sobre testes automatizados
Falando sobre testes automatizados
 
Suporte a macros na sua aplicação com PowerShell
Suporte a macros na sua aplicação com PowerShellSuporte a macros na sua aplicação com PowerShell
Suporte a macros na sua aplicação com PowerShell
 
Test-driven development & Mocking
Test-driven development & MockingTest-driven development & Mocking
Test-driven development & Mocking
 
Clean code
Clean codeClean code
Clean code
 
Testes e mocks: Em Visual Studio com .NET
Testes e mocks: Em Visual Studio com .NETTestes e mocks: Em Visual Studio com .NET
Testes e mocks: Em Visual Studio com .NET
 
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
 
Começando errado com php
Começando errado com phpComeçando errado com php
Começando errado com php
 
Como se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoComo se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundo
 
Xamarin UI Test + BDD Specflow
Xamarin UI Test + BDD SpecflowXamarin UI Test + BDD Specflow
Xamarin UI Test + BDD Specflow
 

Semelhante a Clean Code 101: do caos ao nirvana em poucos passos

Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In TubaRafael Paz
 
Princípios Básicos para Desenvolvedores
Princípios Básicos para DesenvolvedoresPrincípios Básicos para Desenvolvedores
Princípios Básicos para Desenvolvedoresguitoper
 
Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Thiago Barradas
 
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Thiago Barradas
 
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
 
Testes de Unidade, por que você deve começar a fazer? - Javaneiros
Testes de Unidade, por que você deve começar a fazer? - JavaneirosTestes de Unidade, por que você deve começar a fazer? - Javaneiros
Testes de Unidade, por que você deve começar a fazer? - JavaneirosRenan Siravegna
 
Coding Dojo - Funcionamento
Coding Dojo - FuncionamentoCoding Dojo - Funcionamento
Coding Dojo - Funcionamentothiagodp
 
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
 
Aprensentacao oo-trincheiras
Aprensentacao oo-trincheirasAprensentacao oo-trincheiras
Aprensentacao oo-trincheirasHigor César
 
Community webcast
Community webcastCommunity webcast
Community webcastYan Justino
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Developer Academy
 

Semelhante a Clean Code 101: do caos ao nirvana em poucos passos (20)

Codigo limpo.pptx
Codigo limpo.pptxCodigo limpo.pptx
Codigo limpo.pptx
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 
Clean code
Clean codeClean code
Clean code
 
Clean code em C#
Clean code em C#Clean code em C#
Clean code em C#
 
A Arte do Código Limpo
A Arte do Código LimpoA Arte do Código Limpo
A Arte do Código Limpo
 
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: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017
 
Code Smells
Code SmellsCode Smells
Code Smells
 
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
 
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
 
Testes de Unidade, por que você deve começar a fazer? - Javaneiros
Testes de Unidade, por que você deve começar a fazer? - JavaneirosTestes de Unidade, por que você deve começar a fazer? - Javaneiros
Testes de Unidade, por que você deve começar a fazer? - Javaneiros
 
Coding Dojo - Funcionamento
Coding Dojo - FuncionamentoCoding Dojo - Funcionamento
Coding Dojo - Funcionamento
 
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
 
Aprensentacao oo-trincheiras
Aprensentacao oo-trincheirasAprensentacao oo-trincheiras
Aprensentacao oo-trincheiras
 
Codigo limpo
Codigo limpoCodigo limpo
Codigo limpo
 
Community webcast
Community webcastCommunity webcast
Community webcast
 
Clean code
Clean codeClean code
Clean code
 
Código limpo php
Código limpo phpCódigo limpo php
Código limpo php
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
 
Código Limpo
Código LimpoCódigo Limpo
Código Limpo
 

Clean Code 101: do caos ao nirvana em poucos passos

  • 1. Clean Code 101: Do caos ao nirvana em poucos passos Gabrielly Gomes Consultant Developer @ Thoughtworks
  • 2.
  • 3. E agora? É possível realizar melhorias consideráveis com simples (mas poderosos) ajustes!
  • 4. Nomes Significativos • Nomes que digam exatamente o que fazem • Que façam parte do contexto do problema • Que sejam pronunciáveis • Não brinque ou desconte a raiva no seu código!!!
  • 5.
  • 6. Comentários • Seu código está legível? • Comentários são ruins. Ponto. • Se sentir a necessidade de comentar, pense antes em refatorar • Comentários são úteis quando algo que foi feito não pode ficar no código por muito tempo, ou quando algo deve ser feito com urgência • Não deixe códigos comentados • Evite fazer comentários //TO DO, provavelmente você nunca mais vai lembrar porque ele está lá!!! Mas, se fizer, descreva o que deve ser feito
  • 7.
  • 8.
  • 9. Funções • Tenha responsabilidade única • O contrato da sua função deve contar o que faz • Tenha a menor quantidade de parâmetros possível • Separe comando e consulta
  • 10.
  • 11.
  • 12. Já está tratado? Existem diferentes tipos de code smells além dos citados anteriormente!
  • 13. Formatação • Indentação padronizada facilita a leitura do código como um todo • Tenha em mente os limites verticais e horizontais • Utilização de linters como ferramenta de auxílio
  • 14.
  • 15. Classes • Manter seus atributos bem encapsulados* • Seguir o princípio da responsabilidade única • Funções internas da classe podem necessitar ser refatoradas, e isso pode gerar novas classes!
  • 16.
  • 17. Tratamento de Erros • Use exceções • Forneça exceções com contexto • Retorne uma exceção ao invés de null
  • 18. O Código já está OK? Dicas gerais de como sempre continuar melhorando seu código!
  • 19. Reuso de código • Refatorações podem gerar códigos similares, faça bom proveito disso! • Quanto menos linhas, menor sua aplicação • Alterações em códigos reutilizados tornam mais simples a manutenção do sistema • A boa utilização dos conceitos anteriores deixa fácil para demais pessoas da sua equipe encontrarem códigos reutilizáveis
  • 20.
  • 21.
  • 22. Testes • Triple A: Arrange, Act & Assert • Tenha um único conceito por teste • Aproveite bem a etapa de refatoração
  • 23.
  • 24. SOLID • Single Responsability Principle • Open-Close Principle • Liskov Substitution Principle • Interface Segregation Principle • Dependency Inversion Principle
  • 25. Grady Booch Um código limpo é simples e direto. Ele é tão bem legível quanto uma prosa bem escrita. Ele jamais torna confuso o objetivo do desenvolvedor, em vez disso, ele está repleto de abstrações claras e linhas de controle objetivas. “ ”
  • 26. Referências • Livro “Código Limpo” por Robert C. Martin • https://sourcemaking.com/refactoring/smells