SlideShare uma empresa Scribd logo
Maurício Andreazza Sganderla
•   Desenvolvedor na uMov.me
•   Aficionado por Agile
•   No mercado de T.I. há 8 anos
•   Formado em Sistemas de Informação

Jorge Oleques
•   Desenvolvedor na GetNet
•   Entusiasta XP
•   No mercado de T.I. há 6 anos
•   Formado Analise e Desenvolvimento
•   Pós-Graduando em Eng Software na FGV
TDD
Test Driven Development
Criador
“Comece pelos testes...”
Todo palestrante fala isso!
Mas como assim pelos testes?
Critérios e User story são seus aliados
Mapa do Tesouro
Lembre-se
Entenda o critério
Faça falhar !
Resolva de forma simples !
Escute seu teste
Refatore
Reinicie o ciclo
• Acabou ! Acabou !
• Foto do galvão




Acabou, acabou !
Evolua seu design
E sem medo
Pois você está protegido
Tenha seu cinto de ferramentas
Meu cinto de ferramentas
Atinja o objetivo
Clean Code
O cara
Por que Clean Code
Lendo Código
Bagunça
Insatisfação com a bagunça
Insatisfação com o teu código
Medo
Impotência
O que ou Como fazer?
Nada, que se foda não foi eu
         quem fez

hahahahahahahahhahahaha
Profissional
O que ou Como fazer?
Iniciar certo
Baby Step
Como fazer?
Com clean code? Mas o que é Clean code?
Fazer com cuidado
Revelar intenção
Fácil de entender
Satisfação
Simplicidade
Simplicidade
"Qualquer idiota é capaz de escrever código que um
 computador possa entender. Bons programadores
   escrevem código que seres humanos podem
             entender”(Martin Fowler)
Benefícios
Refatoração
Manutenção
Custo
Mito
Diminuir BUGs
Exemplos
// valor salario
private BigDecimal vl;

// total da compra
public BigDecimal s1;

// descricao do produto
public void desc;
private BigDecimal valorSalario;


public BigDecimal totalCompra;


public void descricaoProduto;
private BigDecimal valorSalario;
public BigDecimal totalCompra;
public void descricaoProduto;
// calcular imposto de renda
public void calcular();

// total a pagar para funcionários
public BigDecimal total();

// gerar relatório dos beneficios
public void gerar();
public void calcularImpostoDeRenda();


public BigDecimal totalPagarFuncionarios();


public void gerarRelatoriosBeneficios();
public void calcularImpostoDeRenda();
public BigDecimal totalPagarFuncionarios();
public void gerarRelatoriosBeneficios();
//calcular frete da entrega
public void calcular(){
    // menor que 2100 km não possui frete
    if(this.distancia < 2100 ){
          this.taxa = this.valorCompra * 0;
   } else{
          this.taxa = this. valorCompra * 0.03;
    }
}
public void calcularFreteDaEntrega(){
    // menor que 2100 km não possui frete
    if(this.distancia < 2100 ){
          this.taxa = this.valorCompra * 0;
   } else{
          this.taxa = this. valorCompra * 0.03;
    }
}
public void calcularFreteDaEntrega(){
    // menor que 2100 km não possui frete
    if(this.distancia < 2100 ){
          this.taxa = this.valorCompra * 0;
   } else{
          this.taxa = this. valorCompra * 0.03;
    }
}

private boolean naoTemFrete(){
  return this.distancia < 2100;
}
public void calcularFreteDaEntrega(){

     if(naoTemFrete()){
          this.taxa = this.valorCompra * 0;
    } else{
          this.taxa = this. valorCompra * 0.03;
     }
}

private boolean naoTemFrete(){
  return this.distancia < 2100;
}
public void calcularFreteDaEntrega(){
   this.taxa = 0;
   if(temFrete())
       this.taxa = this. valorCompra * PERCENTUAL_CALCULO;
}

private boolean temFrete(){
  return this.distancia > DISTANCIA_MINIMA;
}
Maurício Andreazza Sganderla
                @m_andreazza

                /mauricio.webdev

               /mauricioweb




     Jorge Oleques

               @jorgeoleques

               /joleques

               /joleques

Mais conteúdo relacionado

Semelhante a TDD e Clean Code

Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasSemana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Manuel Menezes de Sequeira
 
Dojo de programação - Dia de Java - UFSCar
Dojo de programação - Dia de Java - UFSCarDojo de programação - Dia de Java - UFSCar
Dojo de programação - Dia de Java - UFSCar
Luiz Ribeiro
 
Adianti Framework PHPConf 2013
Adianti Framework PHPConf 2013Adianti Framework PHPConf 2013
Adianti Framework PHPConf 2013
Pablo Dall'Oglio
 
Implementação, design ou arquitetura?
Implementação, design ou arquitetura?Implementação, design ou arquitetura?
Implementação, design ou arquitetura?
David Robert Camargo de Campos
 
Vamos falar de Clean Code, Refatoração e TDD
Vamos falar de Clean Code, Refatoração e TDDVamos falar de Clean Code, Refatoração e TDD
Vamos falar de Clean Code, Refatoração e TDD
Domingos Teruel
 
Pg sem3-1505102
Pg sem3-1505102Pg sem3-1505102
Pg sem3-1505102
csmp
 
Pg sem3ex
Pg sem3exPg sem3ex
Pg sem3ex
csmp
 
Dip the dependency inversion principle
Dip   the dependency inversion principleDip   the dependency inversion principle
Dip the dependency inversion principle
Engenharia de Software Ágil
 
Java Craftsmanship: Lessons Learned on How to Produce Truly Beautiful Java Code
Java Craftsmanship: Lessons Learned on How to Produce Truly Beautiful Java CodeJava Craftsmanship: Lessons Learned on How to Produce Truly Beautiful Java Code
Java Craftsmanship: Lessons Learned on How to Produce Truly Beautiful Java Code
Edson Yanaga
 
Portfólio ADS- sem 4 - atividade em grupo
Portfólio ADS- sem 4 - atividade em grupoPortfólio ADS- sem 4 - atividade em grupo
Portfólio ADS- sem 4 - atividade em grupo
Adilson Nascimento
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
Pablo Dall'Oglio
 
Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02
thomasdacosta
 
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptxAula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
aronoliveira3
 
VRaptor4
VRaptor4VRaptor4
Desafio de Robótica - Católica de Santa Catarina - Joinville
Desafio de Robótica - Católica de Santa Catarina - JoinvilleDesafio de Robótica - Católica de Santa Catarina - Joinville
Desafio de Robótica - Católica de Santa Catarina - Joinville
Natã Barbosa
 
Programação orientada a objetos em delphi
Programação orientada a objetos em delphiProgramação orientada a objetos em delphi
Programação orientada a objetos em delphi
Helder Lopes
 
Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BH
Giovanni Bassi
 
Técnicas de Refactoring
Técnicas de RefactoringTécnicas de Refactoring
Técnicas de Refactoring
Rodrigo Branas
 
Cacheamento Lado Servidor
Cacheamento Lado ServidorCacheamento Lado Servidor
Cacheamento Lado Servidor
Mario Guedes
 

Semelhante a TDD e Clean Code (20)

Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasSemana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
 
Dojo de programação - Dia de Java - UFSCar
Dojo de programação - Dia de Java - UFSCarDojo de programação - Dia de Java - UFSCar
Dojo de programação - Dia de Java - UFSCar
 
Adianti Framework PHPConf 2013
Adianti Framework PHPConf 2013Adianti Framework PHPConf 2013
Adianti Framework PHPConf 2013
 
Implementação, design ou arquitetura?
Implementação, design ou arquitetura?Implementação, design ou arquitetura?
Implementação, design ou arquitetura?
 
Vamos falar de Clean Code, Refatoração e TDD
Vamos falar de Clean Code, Refatoração e TDDVamos falar de Clean Code, Refatoração e TDD
Vamos falar de Clean Code, Refatoração e TDD
 
Pg sem3-1505102
Pg sem3-1505102Pg sem3-1505102
Pg sem3-1505102
 
Pg sem3ex
Pg sem3exPg sem3ex
Pg sem3ex
 
Dip the dependency inversion principle
Dip   the dependency inversion principleDip   the dependency inversion principle
Dip the dependency inversion principle
 
Dip the dependency inversion principle
Dip   the dependency inversion principleDip   the dependency inversion principle
Dip the dependency inversion principle
 
Java Craftsmanship: Lessons Learned on How to Produce Truly Beautiful Java Code
Java Craftsmanship: Lessons Learned on How to Produce Truly Beautiful Java CodeJava Craftsmanship: Lessons Learned on How to Produce Truly Beautiful Java Code
Java Craftsmanship: Lessons Learned on How to Produce Truly Beautiful Java Code
 
Portfólio ADS- sem 4 - atividade em grupo
Portfólio ADS- sem 4 - atividade em grupoPortfólio ADS- sem 4 - atividade em grupo
Portfólio ADS- sem 4 - atividade em grupo
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 
Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02
 
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptxAula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
 
VRaptor4
VRaptor4VRaptor4
VRaptor4
 
Desafio de Robótica - Católica de Santa Catarina - Joinville
Desafio de Robótica - Católica de Santa Catarina - JoinvilleDesafio de Robótica - Católica de Santa Catarina - Joinville
Desafio de Robótica - Católica de Santa Catarina - Joinville
 
Programação orientada a objetos em delphi
Programação orientada a objetos em delphiProgramação orientada a objetos em delphi
Programação orientada a objetos em delphi
 
Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BH
 
Técnicas de Refactoring
Técnicas de RefactoringTécnicas de Refactoring
Técnicas de Refactoring
 
Cacheamento Lado Servidor
Cacheamento Lado ServidorCacheamento Lado Servidor
Cacheamento Lado Servidor
 

Mais de Jorge Oleques

Todo Super-herói tem suas fraquezas. Saiba como o Super-Agile foi derrotado.
Todo Super-herói tem suas fraquezas. Saiba como o Super-Agile foi derrotado.Todo Super-herói tem suas fraquezas. Saiba como o Super-Agile foi derrotado.
Todo Super-herói tem suas fraquezas. Saiba como o Super-Agile foi derrotado.
Jorge Oleques
 
Lei de Demeter parte
Lei de Demeter parteLei de Demeter parte
Lei de Demeter parte
Jorge Oleques
 
TDD e Clean Code, garantia de um desenvolvimento saudável
TDD e Clean Code, garantia de um desenvolvimento saudávelTDD e Clean Code, garantia de um desenvolvimento saudável
TDD e Clean Code, garantia de um desenvolvimento saudável
Jorge Oleques
 
Introdução Domain-Driven-Design
Introdução Domain-Driven-Design Introdução Domain-Driven-Design
Introdução Domain-Driven-Design
Jorge Oleques
 
Solid
SolidSolid
Apresentacao tdc 2012
Apresentacao tdc 2012Apresentacao tdc 2012
Apresentacao tdc 2012
Jorge Oleques
 

Mais de Jorge Oleques (6)

Todo Super-herói tem suas fraquezas. Saiba como o Super-Agile foi derrotado.
Todo Super-herói tem suas fraquezas. Saiba como o Super-Agile foi derrotado.Todo Super-herói tem suas fraquezas. Saiba como o Super-Agile foi derrotado.
Todo Super-herói tem suas fraquezas. Saiba como o Super-Agile foi derrotado.
 
Lei de Demeter parte
Lei de Demeter parteLei de Demeter parte
Lei de Demeter parte
 
TDD e Clean Code, garantia de um desenvolvimento saudável
TDD e Clean Code, garantia de um desenvolvimento saudávelTDD e Clean Code, garantia de um desenvolvimento saudável
TDD e Clean Code, garantia de um desenvolvimento saudável
 
Introdução Domain-Driven-Design
Introdução Domain-Driven-Design Introdução Domain-Driven-Design
Introdução Domain-Driven-Design
 
Solid
SolidSolid
Solid
 
Apresentacao tdc 2012
Apresentacao tdc 2012Apresentacao tdc 2012
Apresentacao tdc 2012
 

Último

Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 

Último (8)

Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 

TDD e Clean Code