If you can't read please download the document
Upload
luiz-ribeiro
View
2.376
Download
3
Embed Size (px)
Citation preview
Coding Dojo >
Luiz Fernando Ribeiro Perdido
[email protected]
27 de Agosto de 2010
Agile Manifesto
Estamos descobrindo maneiras melhores de desenvolversoftware, fazendo-o ns mesmos e ajudando outros afazerem o mesmo.Atravs deste trabalho, passamos a valorizar:
Indivduos e interaes mais que processos e ferramentasSoftware em funcionamento mais que documentao abrangenteColaborao com o cliente mais que negociao de contratosResponder a mudanas mais que seguir um plano
Ou seja, mesmo havendo valor nos itens direita,valorizamos mais os itens esquerda.
O que mais difcil em programao?
Entender o problema
Estruturar suas ideias
Elaborar uma soluo
Conhecer a plataforma de programao
Digitar o cdigo
Testar o resultado
Programao em pares
Vantagens de programao em pares
Eficincia (duas cabeas pensam melhor que uma)
Feedback instantneo
Propriedade coletiva
Menor fator caminho
Zaphod Beeblebrox
Testes?
Testes unitrios
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....}
Benefcios de TDD
Simplicidade
Modularizao
Extensibilidade
Produtividade
Testes como documentao
def "project can't be deleted if it has expenses"() { given: currentUserIsProjectOwner() projectHasExpenses() projectHasNoActivities() when: tryToDeleteProject() then: projectIsNotDeleted()}
// Taken from: http://www.aqris.com/display/DEV/2010/01/19/Testing+with+Spock
Coding Dojo
Reunio de programadores para resolver um desafio de programao. Eles esto l para se divertir e, atravs do uso de boas praticas, melhorar suas habilidades.
http://codingdojo.org/
Aprendizado contnuo
Ambiente:
No-competitivo
Colaborativo
Descontrado
Seguro para testar novas ideias
Todos nveis de conhecimento so bem-vindos
Passos de beb
Um par de programadoresUma plateia
Integrantes do par mudam a cada 5 minutos
Regras:
- O par deve descrever em voz alta suas aes- Comentrios somente no verde- Silncio no vermelho- No nos preocupamos em terminar- O foco no aprendizado e descontrao
Click to edit the title text formatClick to edit Master title style
Click to edit the outline text formatSecond Outline LevelThird Outline LevelFourth Outline LevelFifth Outline LevelSixth Outline LevelSeventh Outline LevelEighth Outline Level
Ninth Outline LevelClick to edit Master text styles
Second level
Third level
Fourth level
Fifth level