SlideShare ist ein Scribd-Unternehmen logo
1 von 71
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

Weitere ähnliche Inhalte

Ähnlich wie 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ânciasManuel 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 - UFSCarLuiz Ribeiro
 
Adianti Framework PHPConf 2013
Adianti Framework PHPConf 2013Adianti Framework PHPConf 2013
Adianti Framework PHPConf 2013Pablo Dall'Oglio
 
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 TDDDomingos Teruel
 
Pg sem3-1505102
Pg sem3-1505102Pg sem3-1505102
Pg sem3-1505102csmp
 
Pg sem3ex
Pg sem3exPg sem3ex
Pg sem3excsmp
 
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 CodeEdson 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 grupoAdilson 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 FrameworkPablo Dall'Oglio
 
Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02thomasdacosta
 
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.pptxaronoliveira3
 
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 - JoinvilleNatã 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 delphiHelder Lopes
 
Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHGiovanni Bassi
 
Técnicas de Refactoring
Técnicas de RefactoringTécnicas de Refactoring
Técnicas de RefactoringRodrigo Branas
 
Cacheamento Lado Servidor
Cacheamento Lado ServidorCacheamento Lado Servidor
Cacheamento Lado ServidorMario Guedes
 

Ähnlich wie 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
 

Mehr von 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 parteJorge 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ávelJorge Oleques
 
Introdução Domain-Driven-Design
Introdução Domain-Driven-Design Introdução Domain-Driven-Design
Introdução Domain-Driven-Design Jorge Oleques
 
Apresentacao tdc 2012
Apresentacao tdc 2012Apresentacao tdc 2012
Apresentacao tdc 2012Jorge Oleques
 

Mehr von 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
 

TDD e Clean Code