SlideShare une entreprise Scribd logo
1  sur  16
Télécharger pour lire hors ligne
Clean Code              Fernando Gama
             Acadêmico de Sistemas de Informação
                  Bolsista AIT/CADIS/PROEG
Clean Code – O que é isso?

•   Elegante
•   Eficiente
•   Legível
•   Simples
•   Direto
•   Único
•   Bem escrito
•   Possui UMA responsabilidade
Clean Code




• Qual sua reação ao ver um código ruim?
Clean Code

• O que todo bom código deve ter?
•
 1. Organização;
 2. Arrumação;
 3. Limpeza;
 4. Padronização;
 5. Autodisciplina;
Clean Code

• E se...
    o código for confuso?

•   Lentidão;
•   Uma alteração, várias falhas;
•   Remendos;
•   Queda de produtividade;
•   Alocação de mais recursos
Clean Code

  1. Nomes significativos
• Nome deve revelar o seu propósito.
• O que fazem? Como são usados? Porque existem?
• Não economize nos caracteres.
• Seja claro.


  Exemplo a não ser seguido: (int d;) //tempo em dias;
Clean Code

public List<int[]> getThem(){
List<int[]> list1 = new ArrayList<int[]>();
for(int[] x : theList)
    if(x[0] == 4) list1.add(x);
       return list1;




public List<int[]> getFlaggedCells(){
List<int[]> flaggedCells = new ArrayList<int[]>();
for(int[] cell:gameBoard)
   if(cell[STATUS_VALUE] == FLAGGED)
       flaggedCells.add(cell);
           return flaggedCells;}
Clean Code

  1. Métodos e funções

  O que os tornam métodos e funções fáceis de se ler e
  entender? A primeira regra dos métodos é que eles devem
  ser pequenos, a segunda é que eles devem ser menores
  ainda.
• Recomenda-se 20 linhas.
• Deve fazer apenas uma coisa.
• Evite passar muitos parâmetros.
Clean Code

public boolean checkPassword(String username, String password)
{
   String passwordStatus =
cryptographer.decrypt(password);
    if(passwordStatus.equals(“OK”)) {
        Session.initialize();
        return true;
    }
    return false;
}
Clean Code

  3. Comentários

• O melhor comentário é aquele que não precisa ser escrito.
• Pode causar confusões.
• Se você pensar em adicionar um comentário é melhor
  refatorar.
• Pode ser utilizado para informar ao leitor sobre alguma
  consequência
• Não é apropriado inserir no código créditos e autoria,
  redundância,informações excessivas, comentários que
  devem ser explicados,etc.
Clean Code

  4. Formatação

• Importante pois facilita o entendimento.
• Classes de no máximo 500 linhas é uma boa prática.
• Espaços entre operadores, parâmetros e vírgulas.
• Conceitos relacionados próximos um do outro.
• Identação para visualização do escopo.
Clean Code

  5. Tratamento de exceção

• Evitar retornar um código de erro.
• Lançamento de excessões.
• Não retornar NULL.
• NULL não pode ser passado como parâmetro.
• As mensagens devem ser informativas.
• Regras de negócio são tratadas em um lugar diferente das
  regras de erros.
Clean Code

  6. Testes

• Garantir que cada pedaço do código esta funcionando.
• Regras do TDD:
• Você não pode escrever o código até que você tenha criado
  um teste que falhe.
• Você não pode escrever mais testes do que seja suficiente
  para falhar.
• Você não pode escrever mais código do que o suficiente
  para passar o teste que está falhando.
Clean Code

  7. Diminuir o número de classes e
  métodos

• Objetivo é manter o sistema pequeno
Clean Code

• E muito +:

 http://blog.bluesoft.com.br/bluesoft-labs-
 clean-code-por-bruno-lui/

 http://www.slideshare.net/WillCaputo/clea
 n-code-13391715
Clean Code




    OBRIGADO!

Contenu connexe

Similaire à Clean Code: 7 Princípios para Escrever Códigos Legíveis e Eficientes

Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In TubaRafael Paz
 
ZeroBugsProject - Técnicas de programação efetivas
ZeroBugsProject - Técnicas de programação efetivasZeroBugsProject - Técnicas de programação efetivas
ZeroBugsProject - Técnicas de programação efetivasRafael Chinelato Del Nero
 
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 - 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
 
Preparando-se para a prova da Certificação Zend PHP 5.3
Preparando-se para a prova da Certificação Zend PHP 5.3Preparando-se para a prova da Certificação Zend PHP 5.3
Preparando-se para a prova da Certificação Zend PHP 5.3klaussilveira
 
TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"Cesar Romero
 
TDD com Código Legado
TDD com Código LegadoTDD com Código Legado
TDD com Código LegadoCesar Romero
 
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
 
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
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisRogerio Fontes
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atechcesarcneto
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do MantraDionatan default
 

Similaire à Clean Code: 7 Princípios para Escrever Códigos Legíveis e Eficientes (20)

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
 
ZeroBugsProject - Técnicas de programação efetivas
ZeroBugsProject - Técnicas de programação efetivasZeroBugsProject - Técnicas de programação efetivas
ZeroBugsProject - Técnicas de programação efetivas
 
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 - 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...
 
Preparando-se para a prova da Certificação Zend PHP 5.3
Preparando-se para a prova da Certificação Zend PHP 5.3Preparando-se para a prova da Certificação Zend PHP 5.3
Preparando-se para a prova da Certificação Zend PHP 5.3
 
TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"
 
TDD com Código Legado
TDD com Código LegadoTDD com Código Legado
TDD com Código Legado
 
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
 
Clean Code
Clean CodeClean Code
Clean Code
 
Clean code em C#
Clean code em C#Clean code em C#
Clean code em C#
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Clean code part 2
Clean code   part 2Clean code   part 2
Clean code part 2
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
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
 
Refatoração de Código Legado
Refatoração de Código LegadoRefatoração de Código Legado
Refatoração de Código Legado
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everis
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atech
 
Clean code
Clean codeClean code
Clean code
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 

Plus de COTIC-PROEG (UFPA) (20)

LT - Redis
LT - RedisLT - Redis
LT - Redis
 
LT Ansible
LT AnsibleLT Ansible
LT Ansible
 
Testes automatizados com Cypress
Testes automatizados com CypressTestes automatizados com Cypress
Testes automatizados com Cypress
 
Loop back
Loop backLoop back
Loop back
 
METEOR
METEORMETEOR
METEOR
 
Desenvolvimento de software tradicional vs ágil
Desenvolvimento de software tradicional vs ágilDesenvolvimento de software tradicional vs ágil
Desenvolvimento de software tradicional vs ágil
 
Canva
CanvaCanva
Canva
 
Git v2
Git v2Git v2
Git v2
 
Atitudes que levam ao Fracasso profissional
Atitudes que levam ao Fracasso profissionalAtitudes que levam ao Fracasso profissional
Atitudes que levam ao Fracasso profissional
 
Os 5 Sensos da Qualidade
Os 5 Sensos da QualidadeOs 5 Sensos da Qualidade
Os 5 Sensos da Qualidade
 
WATSON - O Fascinante Computador da IBM
WATSON - O Fascinante Computador da IBMWATSON - O Fascinante Computador da IBM
WATSON - O Fascinante Computador da IBM
 
Produtividade sem enrrolação
Produtividade sem enrrolaçãoProdutividade sem enrrolação
Produtividade sem enrrolação
 
LAB JavaScript
LAB JavaScriptLAB JavaScript
LAB JavaScript
 
Principios e Valores Ágeis
Principios e Valores ÁgeisPrincipios e Valores Ágeis
Principios e Valores Ágeis
 
Big data
Big dataBig data
Big data
 
Metricas para Times Ágeis
Metricas para Times ÁgeisMetricas para Times Ágeis
Metricas para Times Ágeis
 
Aplicação de Abordagens Ágeis: Estudo de Caso de utlização do SCRUM – PROEG/UFPA
Aplicação de Abordagens Ágeis: Estudo de Caso de utlização do SCRUM – PROEG/UFPAAplicação de Abordagens Ágeis: Estudo de Caso de utlização do SCRUM – PROEG/UFPA
Aplicação de Abordagens Ágeis: Estudo de Caso de utlização do SCRUM – PROEG/UFPA
 
Técnicas para Programação em Par
Técnicas para Programação em ParTécnicas para Programação em Par
Técnicas para Programação em Par
 
Feedback Canvas
Feedback CanvasFeedback Canvas
Feedback Canvas
 
5 Doenças do Gerenciamento de Projetos
5 Doenças do Gerenciamento de Projetos5 Doenças do Gerenciamento de Projetos
5 Doenças do Gerenciamento de Projetos
 

Clean Code: 7 Princípios para Escrever Códigos Legíveis e Eficientes

  • 1. Clean Code Fernando Gama Acadêmico de Sistemas de Informação Bolsista AIT/CADIS/PROEG
  • 2. Clean Code – O que é isso? • Elegante • Eficiente • Legível • Simples • Direto • Único • Bem escrito • Possui UMA responsabilidade
  • 3. Clean Code • Qual sua reação ao ver um código ruim?
  • 4. Clean Code • O que todo bom código deve ter? • 1. Organização; 2. Arrumação; 3. Limpeza; 4. Padronização; 5. Autodisciplina;
  • 5. Clean Code • E se... o código for confuso? • Lentidão; • Uma alteração, várias falhas; • Remendos; • Queda de produtividade; • Alocação de mais recursos
  • 6. Clean Code 1. Nomes significativos • Nome deve revelar o seu propósito. • O que fazem? Como são usados? Porque existem? • Não economize nos caracteres. • Seja claro. Exemplo a não ser seguido: (int d;) //tempo em dias;
  • 7. Clean Code public List<int[]> getThem(){ List<int[]> list1 = new ArrayList<int[]>(); for(int[] x : theList) if(x[0] == 4) list1.add(x); return list1; public List<int[]> getFlaggedCells(){ List<int[]> flaggedCells = new ArrayList<int[]>(); for(int[] cell:gameBoard) if(cell[STATUS_VALUE] == FLAGGED) flaggedCells.add(cell); return flaggedCells;}
  • 8. Clean Code 1. Métodos e funções O que os tornam métodos e funções fáceis de se ler e entender? A primeira regra dos métodos é que eles devem ser pequenos, a segunda é que eles devem ser menores ainda. • Recomenda-se 20 linhas. • Deve fazer apenas uma coisa. • Evite passar muitos parâmetros.
  • 9. Clean Code public boolean checkPassword(String username, String password) { String passwordStatus = cryptographer.decrypt(password); if(passwordStatus.equals(“OK”)) { Session.initialize(); return true; } return false; }
  • 10. Clean Code 3. Comentários • O melhor comentário é aquele que não precisa ser escrito. • Pode causar confusões. • Se você pensar em adicionar um comentário é melhor refatorar. • Pode ser utilizado para informar ao leitor sobre alguma consequência • Não é apropriado inserir no código créditos e autoria, redundância,informações excessivas, comentários que devem ser explicados,etc.
  • 11. Clean Code 4. Formatação • Importante pois facilita o entendimento. • Classes de no máximo 500 linhas é uma boa prática. • Espaços entre operadores, parâmetros e vírgulas. • Conceitos relacionados próximos um do outro. • Identação para visualização do escopo.
  • 12. Clean Code 5. Tratamento de exceção • Evitar retornar um código de erro. • Lançamento de excessões. • Não retornar NULL. • NULL não pode ser passado como parâmetro. • As mensagens devem ser informativas. • Regras de negócio são tratadas em um lugar diferente das regras de erros.
  • 13. Clean Code 6. Testes • Garantir que cada pedaço do código esta funcionando. • Regras do TDD: • Você não pode escrever o código até que você tenha criado um teste que falhe. • Você não pode escrever mais testes do que seja suficiente para falhar. • Você não pode escrever mais código do que o suficiente para passar o teste que está falhando.
  • 14. Clean Code 7. Diminuir o número de classes e métodos • Objetivo é manter o sistema pequeno
  • 15. Clean Code • E muito +: http://blog.bluesoft.com.br/bluesoft-labs- clean-code-por-bruno-lui/ http://www.slideshare.net/WillCaputo/clea n-code-13391715
  • 16. Clean Code OBRIGADO!