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 fa...
O que é mais difícil em programação? <ul><li>Entender o problema
Estruturar suas ideias
Elaborar uma solução
Conhecer a plataforma de programação
Digitar o código
Testar o resultado </li></ul>
Programação em pares
Vantagens de programação em pares <ul><li>Eficiência  (duas cabeças pensam melhor que uma)
Feedback instantâneo
Propriedade coletiva
Menor “fator caminhão” </li></ul>Zaphod Beeblebrox
Testes?
Testes unitários
package  calculator; public   class  Calculator { public   float  divide( float  dividend,  float  divisor) { if  (divisor...
package  calculator; import   static  org.junit.Assert. assertEquals ; import  org.junit.Test; public   class  CalculatorT...
Test-driven development (TDD)
package  calculator; import   static  org.junit.Assert. assertEquals ; import  org.junit.Test; public   class  CalculatorT...
package  calculator; import   static  org.junit.Assert. assertEquals ; import  org.junit.Test; public   class  CalculatorT...
package  calculator; public   class  Calculator { public   float  divide( float  dividend,  float  divisor) { return  divi...
package  calculator; import   static  org.junit.Assert. assertEquals ; import  org.junit.Test; public   class  CalculatorT...
package  calculator; public   class  Calculator { public   float  divide( float  dividend,  float  divisor) { if  (divisor...
Benefícios de TDD <ul><li>Simplicidade
Modularização
Extensibilidade
Upcoming SlideShare
Loading in...5
×

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

1,971

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,971
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
17
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Coding Dojo > Luiz Fernando Ribeiro “Perdido” [email_address] 27 de Agosto de 2010
  2. 2. 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.
  3. 3. O que é mais difícil em programação? <ul><li>Entender o problema
  4. 4. Estruturar suas ideias
  5. 5. Elaborar uma solução
  6. 6. Conhecer a plataforma de programação
  7. 7. Digitar o código
  8. 8. Testar o resultado </li></ul>
  9. 9. Programação em pares
  10. 10. Vantagens de programação em pares <ul><li>Eficiência (duas cabeças pensam melhor que uma)
  11. 11. Feedback instantâneo
  12. 12. Propriedade coletiva
  13. 13. Menor “fator caminhão” </li></ul>Zaphod Beeblebrox
  14. 14. Testes?
  15. 15. Testes unitários
  16. 16. package calculator; public class Calculator { public float divide( float dividend, float divisor) { if (divisor == 0) { throw new CalculatorException( &quot;Can't divide by zero.&quot; ); } return dividend / divisor; } // other methods.... }
  17. 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. 18. Test-driven development (TDD)
  19. 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. 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. 21. package calculator; public class Calculator { public float divide( float dividend, float divisor) { return dividend / divisor; } // other methods.... }
  22. 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. 23. package calculator; public class Calculator { public float divide( float dividend, float divisor) { if (divisor == 0) { throw new CalculatorException( &quot;Can't divide by zero.&quot; ); } return dividend / divisor; } // other methods.... }
  24. 24. Benefícios de TDD <ul><li>Simplicidade
  25. 25. Modularização
  26. 26. Extensibilidade
  27. 27. Produtividade </li></ul>
  28. 28. Testes como documentação
  29. 29. def &quot;project can't be deleted if it has expenses&quot; () { given: currentUserIsProjectOwner() projectHasExpenses() projectHasNoActivities() when: tryToDeleteProject() then: projectIsNotDeleted() } // Taken from: http://www.aqris.com/display/DEV/2010/01/19/Testing+with+Spock
  30. 30. Coding Dojo
  31. 31. Reunião de programadores para resolver um desafio de programação. Eles estão lá para se divertir e, através do uso de boas praticas, melhorar suas habilidades. http://codingdojo.org/
  32. 32. <ul><li>Aprendizado é contínuo
  33. 33. Ambiente: </li></ul><ul><ul><li>Não-competitivo
  34. 34. Colaborativo </li></ul></ul><ul><ul><li>Descontraído
  35. 35. Seguro para testar novas ideias </li></ul><li>Todos níveis de conhecimento são bem-vindos
  36. 36. Passos de bebê </li></ul>
  37. 37. Um par de programadores Uma plateia
  38. 38. Integrantes do par mudam a cada 5 minutos
  39. 40. Regras: - O par deve descrever em voz alta suas ações - Comentários somente no verde - Silêncio no vermelho - Não nos preocupamos em terminar - O foco é no aprendizado e descontração
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×