terça-feira, 7 de dezembro de 2010

Terceiro Code Dojo

Agora o resumo e os desdobramentos do nosso terceirot Code Dojo, que tomei a liberdade de chamar de "Terceiro Code Dojo PyD'Égua". Este aconteceu no dia 03/12/2010, e os participantes foram: Francival, Rogênio, Priscilla, Marcelo, Sebastião e eu.
E chegamos ao nosso terceiro CodeDojoPydégua! Foi muito legal. Dessa vez contamos com a ilustríssima presença da Priscilla, que veio abrilhantar nosso encontro com seu charme e comentários sensatos e pertinentes! (depois eu te peço um dinheiro emprestado, tá tia Pris?? :-) ). Na próxima a Priscilla já vai ser um dos participantes efetivos, ou seja, vai "rodar" no piloto e co-piloto!

E sentimos mais uma vez a falta do Ézyo, que não pode comparecer. Acho que está desde ontem à noite no Maricotinha, ainda apreciando o coquetel de lançamento do BlackBerry!! :-)


Já tivemos notícia de que mais pessoas querem participar. Assim, acho que da próxima vez precisaremos arranjar um lugar maior. É, o negócio está crescendo (tô falando no bom sentido!), creio que daqui a mais algumas reuniões vamos começar a cobrar ingresso!! :-)

Brincadeiras à parte, a reunião foi legal e produtiva. Mais uma vez assimilamos conhecimentos em relação ao código e ao método, e chegamos muito próximo de resolver o problema. Acho até que podemos considerar resolvido, pois o que faltou foi erro na especificação dos requisitos (
mea culpa!).

Bem vamos ao que interessa:


Problema:
- O problema escolhido dessa vez foi o FizzBuzz (parecido com aquela brincadeira do "pim" que passava no Sílvio Santos, época que eu ainda nem era nascido!), e consiste no seguinte:

- Sempre que um número for múltiplo de 3, não exibe o número e exibe "Fizz";

- Sempre que um número for múltiplo de 5, não exibe o número e exibe "Buzz";
- Sempre que um número contiver 3, não exibe o número e exibe "Fizz";
- Sempre que um número contiver 5, não exibe o número e exibe "Buzz";
- Se o número for múltiplo de 3 E 5 ao mesmo tempo, exibe "FizzBuzz";

Meu erro nos requisitos foi ter esquecido de acrescentar que quando o número contiver 3 E 5 exibiria a mensagem "FizzBuzz". Fora isso, todos os testes funcionaram, então consideraremos o problema resolvido, certo? ;-)

Código:

- O código resultante do nosso Dojo está no pastebin: http://pastebin.com/iJD8qNbD

Avaliação:

  • Pontos Positivos:
    • A presença da Priscilla! :-)
    • O problema foi de fácil entendimento, o que nos ajudou a concentrar melhor na resolução;
    • O código resultante ficou legível e fácil de entender. Também ficou bem fragmentado, com funções pequenas e bem definidas;
    • Começamos a respeitar melhor o "vermelho" (hora de calar) e o "verde" (hora de falar). Também corrigimos um erro de interpretação com relação ao uso do vermelho e verde: no vermelho, os testes ainda não passaram e o piloto e o co-piloto devem se concentrar sozinhos em fazer o testes passar, e no verde, o teste está passando e a platéia pode dar pitaco;
    • O método (Code Dojo) facilita o desenvolvimento do algoritmo e também o aprendizado;
    • A dinâmica funcionou melhor, creio que pela prática dos outros CodeDojo e também por termos assimilado melhor a técnica;
    • A sensação de que o TDD funciona e é uma boa prática a ser seguida.
  • Pontos Negativos:
    • A saída do Sebastião antes do fim (tudo bem, tá desculpado), afinal de contas a presença de todos é importante;
    • A falha (mais uma vez, mea culpa) na definição dos requisitos, o que, no final, acabou sendo encarado por todos como um exemplo do que pode acontecer na realidade;
    • Faltou um local para expor o problema e seus requisitos, pois quando estamos pensando na resolução fica melhor se visualizamos o problema e os requisitos;
    • Faltou o lanche!! :-)
    • Em um determinado momento nos faltou um pouco de conhecimento da linguagem Python (atributo do método string).
Como nós conversamos na avaliação, gostaria de pedir para o Marcelo nos enviar algum material sobre refatoração de código. Pode ser, Marcelo? ;-)

Mais uma vez tivemos mais pontos positivos que negativos. Isso é legal e já me empolga a marcar o próximo encontro: 10/12/2010 (sexta-feira), no mesmo horário e local. Precisamos confirmar se vai aparecer mais gente, porque se isso acontecer precisaremos de uma sala maior.

Fiquem à vontade para corrigir qualquer informação aqui.

Bem, acho que é isso! :-)



O Rogênio, que não brinca em serviço, brincou com o código e fez alguns melhoramentos:
    Esses dias estive brincando um pouco com o nosso último código e diminuí um módulo. (unifiquei os módulos 'efizz' e 'ebuzz' em um único módulo, o 'efioubu') e inseri mais de uma entrada nos módulos: http://pastebin.com/qPNeSHem
    O código que o Cléoson publicou está bem mais didático que o meu, que  serviu mais como uma brincadeira de testes pra mim mesmo.
 E eu, só pra dizer que fiz alguma coisa, dei um mini-pitaco no código:
     Apenas pra economizar duas linhas no código, sugiro alterar a linha 23 do teu código para:

def fizzbuzz(n, fi=3, bu=5):

     E eliminar as linhas 24 e 25.
Marcelo,
 
      Isso seria refatorar? Ainda não tive tempo de ler o material que tu enviaste.
E a resposta do Marcelo:
Qualquer alteração que simplifica o código sem alterar o
comportamento externo é refatoração.  Então: com certeza.
Bem, acho que foi isso. Após este e-mail, apenas mais um ou dois sobre colocar ou não estes resumos no blog, o que, pelo que se pode ver, foi feito. :-)
E a partir do próximo 'Code Dojo PyD'Égua', colocarei o resumo direto aqui, e as discussões acontecerão nos comentários.

Nenhum comentário: