Coding Dojo > Luiz Fernando Ribeiro “Perdido” [email_address] 27 de Agosto de 2010
Agile Manifesto Estamos descobrindo maneiras melhores de desenvolver software, fazendo-o nós mesmos e ajudando outros a fazerem o mesmo. Através deste trabalho, passamos a valorizar:  Indivíduos e interações  mais que processos e ferramentas Software em funcionamento  mais que documentação abrangente Colaboração com o cliente  mais que negociação de contratos Responder a mudanças  mais que seguir um plano Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda.
O que é mais difícil em programação? Entender o problema
Estruturar suas ideias
Elaborar uma solução
Conhecer a plataforma de programação
Digitar o código
Testar o resultado
Programação em pares
Vantagens de programação em pares Eficiência  (duas cabeças pensam melhor que uma)
Feedback instantâneo
Propriedade coletiva
Menor “fator caminhão” Zaphod Beeblebrox
Testes?
Testes unitários
package  calculator; public   class  Calculator { public   float  divide( float  dividend,  float  divisor) { if  (divisor == 0) { throw   new  CalculatorException( "Can't divide by zero." ); } return  dividend / divisor; } // other methods.... }
package  calculator; import   static  org.junit.Assert. assertEquals ; import  org.junit.Test; public   class  CalculatorTests { @Test public   void  divideShouldReturnTheDivisionQuotient() { float  result =  new  Calculator().divide(56, 8); assertEquals (7, result, 0.0); } @Test public   void  divideShouldReturnDecimalPartsOfNonExactDivisions()  throws  Exception { float  result =  new  Calculator().divide(5, 2); assertEquals (2.5, result, 0.0); } @Test (expected = CalculatorException. class ) public   void  divideShouldThrowACalculatorExceptionWhenDividingByZero()  throws  Exception { new  Calculator().divide(5, 0); } }
Test-driven development (TDD)
package  calculator; import   static  org.junit.Assert. assertEquals ; import  org.junit.Test; public   class  CalculatorTests { @Test public   void  divideShouldReturnTheDivisionQuotient() { int  result =  new  Calculator().divide(56, 8); assertEquals (7, result); } } package  calculator; public   class  Calculator { public   int  divide( int  n1,  int  n2) { return  n1 / n2; } }
package  calculator; import   static  org.junit.Assert. assertEquals ; import  org.junit.Test; public   class  CalculatorTests { @Test public   void  divideShouldReturnTheDivisionQuotient() { float  result =  new  Calculator().divide(56, 8); assertEquals (7, result, 0.0); } @Test public   void   divideShouldReturnDecimalPartsOfNonExactDivisions ()  throws  Exception { float  result =  new  Calculator().divide(5, 2); assertEquals (2.5, result, 0.0); } }
package  calculator; public   class  Calculator { public   float  divide( float  dividend,  float  divisor) { return  dividend / divisor; } // other methods.... }
package  calculator; import   static  org.junit.Assert. assertEquals ; import  org.junit.Test; public   class  CalculatorTests { @Test public   void  divideShouldReturnTheDivisionQuotient() { float  result =  new  Calculator().divide(56, 8); assertEquals (7, result, 0.0); } @Test public   void  divideShouldReturnDecimalPartsOfNonExactDivisions()  throws  Exception { float  result =  new  Calculator().divide(5, 2); assertEquals (2.5, result, 0.0); } @Test (expected = CalculatorException. class ) public   void  divideShouldThrowACalculatorExceptionWhenDividingByZero()  throws  Exception { new  Calculator().divide(5, 0); } }
package  calculator; public   class  Calculator { public   float  divide( float  dividend,  float  divisor) { if  (divisor == 0) { throw   new  CalculatorException( "Can't divide by zero." ); } return  dividend / divisor; } // other methods.... }
Benefícios de TDD Simplicidade
Modularização
Extensibilidade

Dojo de programação - Dia de Java - UFSCar

  • 1.
    Coding Dojo >Luiz Fernando Ribeiro “Perdido” [email_address] 27 de Agosto de 2010
  • 2.
    Agile Manifesto Estamosdescobrindo maneiras melhores de desenvolver software, fazendo-o nós mesmos e ajudando outros a fazerem o mesmo. Através deste trabalho, passamos a valorizar: Indivíduos e interações mais que processos e ferramentas Software em funcionamento mais que documentação abrangente Colaboração com o cliente mais que negociação de contratos Responder a mudanças mais que seguir um plano Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda.
  • 3.
    O que émais difícil em programação? Entender o problema
  • 4.
  • 5.
  • 6.
    Conhecer a plataformade programação
  • 7.
  • 8.
  • 9.
  • 10.
    Vantagens de programaçãoem pares Eficiência (duas cabeças pensam melhor que uma)
  • 11.
  • 12.
  • 13.
    Menor “fator caminhão”Zaphod Beeblebrox
  • 14.
  • 15.
  • 16.
    package calculator;public class Calculator { public float divide( float dividend, float divisor) { if (divisor == 0) { throw new CalculatorException( "Can't divide by zero." ); } return dividend / divisor; } // other methods.... }
  • 17.
    package calculator;import static org.junit.Assert. assertEquals ; import org.junit.Test; public class CalculatorTests { @Test public void divideShouldReturnTheDivisionQuotient() { float result = new Calculator().divide(56, 8); assertEquals (7, result, 0.0); } @Test public void divideShouldReturnDecimalPartsOfNonExactDivisions() throws Exception { float result = new Calculator().divide(5, 2); assertEquals (2.5, result, 0.0); } @Test (expected = CalculatorException. class ) public void divideShouldThrowACalculatorExceptionWhenDividingByZero() throws Exception { new Calculator().divide(5, 0); } }
  • 18.
  • 19.
    package calculator;import static org.junit.Assert. assertEquals ; import org.junit.Test; public class CalculatorTests { @Test public void divideShouldReturnTheDivisionQuotient() { int result = new Calculator().divide(56, 8); assertEquals (7, result); } } package calculator; public class Calculator { public int divide( int n1, int n2) { return n1 / n2; } }
  • 20.
    package calculator;import static org.junit.Assert. assertEquals ; import org.junit.Test; public class CalculatorTests { @Test public void divideShouldReturnTheDivisionQuotient() { float result = new Calculator().divide(56, 8); assertEquals (7, result, 0.0); } @Test public void divideShouldReturnDecimalPartsOfNonExactDivisions () throws Exception { float result = new Calculator().divide(5, 2); assertEquals (2.5, result, 0.0); } }
  • 21.
    package calculator;public class Calculator { public float divide( float dividend, float divisor) { return dividend / divisor; } // other methods.... }
  • 22.
    package calculator;import static org.junit.Assert. assertEquals ; import org.junit.Test; public class CalculatorTests { @Test public void divideShouldReturnTheDivisionQuotient() { float result = new Calculator().divide(56, 8); assertEquals (7, result, 0.0); } @Test public void divideShouldReturnDecimalPartsOfNonExactDivisions() throws Exception { float result = new Calculator().divide(5, 2); assertEquals (2.5, result, 0.0); } @Test (expected = CalculatorException. class ) public void divideShouldThrowACalculatorExceptionWhenDividingByZero() throws Exception { new Calculator().divide(5, 0); } }
  • 23.
    package calculator;public class Calculator { public float divide( float dividend, float divisor) { if (divisor == 0) { throw new CalculatorException( "Can't divide by zero." ); } return dividend / divisor; } // other methods.... }
  • 24.
    Benefícios de TDDSimplicidade
  • 25.
  • 26.