Terceiro Code Dojo
Autor: Cléoson Barreto | Publicado: 2010-12-07T14:39:00-03:00

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:
&nbsp;&nbsp;&nbsp; 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
&nbsp;&nbsp;&nbsp; O código que o Cléoson publicou está bem mais didático que o meu,  que&nbsp; serviu mais como uma brincadeira de testes pra mim mesmo. &nbsp;E eu, só pra dizer que fiz alguma coisa, dei um mini-pitaco no código:
&nbsp;&nbsp;&nbsp;&nbsp; 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):

&nbsp;&nbsp;&nbsp;&nbsp; E  eliminar as linhas 24 e 25.Marcelo,
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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. &nbsp;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.