O documento discute os princípios do Manifesto Ágil, como programação em pares, testes unitários e test-driven development (TDD). Também apresenta o conceito de Coding Dojo, que reúne programadores para resolver desafios de programação de forma colaborativa e não competitiva, com o objetivo de aprendizado.
Programando para programadores: Desafios na evolução de um Framework
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 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.
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.... }
29. 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
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/
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