Como trabalhar com código legado

300 visualizações

Publicada em

Apresentação realizada para a equipe do Reserve, sobre como trabalhar com código legado

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
300
No SlideShare
0
A partir de incorporações
0
Número de incorporações
71
Ações
Compartilhamentos
0
Downloads
2
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Como trabalhar com código legado

  1. 1. Como trabalhar com código legado
  2. 2. Velho desenvolvimento. Novos paradigmas. Será que sabemos realmente o que estamos fazendo?
  3. 3. Vou contar um pouco do que funcionou para mim e que pode funcionar para você também!
  4. 4. Ah é só botar breakpoint e tentar descobrir porque está falhando!
  5. 5. Refatorar é como soltar um cordão trançado
  6. 6. O objetivo ao refatorar um código super-acoplado é sempre e a todo custo buscar a criação de teste unitários.
  7. 7. Se não fizer isso.
  8. 8. Se não fizer isso.
  9. 9. Crie Regions public int RotinaAcoplada(boolean teste){ if (! teste){ var dao = new UsuarioDAO(); ... ... ... return dao.listarUsuarios().Count; } return 0; }
  10. 10. Crie Regions public int RotinaAcoplada(boolean teste){ if (! teste){ var dao = new UsuarioDAO(); #region Quantidade de Usuarios ... #endregion return dao.listarUsuarios().Count; } return 0; }
  11. 11. Crie um metodo vazio com o nome da Region public int QuantidadeUsuarios(){ var dao = new UsuarioDAO(); return dao.listarUsuarios().Count; }
  12. 12. Copie o código da Region para o Método public int QuantidadeUsuarios(){ var dao = new UsuarioDAO(); return dao.listarUsuarios().Count; }
  13. 13. Neste momento o código não compila e isso agora é bom. Porque?
  14. 14. Chame o novo metodo no lugar public int RotinaAcoplada(boolean teste){ if (! teste){ var dao = new UsuarioDAO(); #region Quantidade de Usuarios ... #endregion return dao.listarUsuarios().Count; } return 0; }
  15. 15. Chame o novo metodo no lugar public int RotinaAcoplada(bool teste){ if (!teste) { return QuantidadeUsuarios(); return 0; }
  16. 16. Agora sim está pronto. Obrigado!
  17. 17. O método anterior continua acoplado e não dá para testar, resolva isso.
  18. 18. Como o Tiago não tá vendo vou dar uma dica. Passe as necessidades do código como parametro da função, o codigo fica mais limpo inclusive.
  19. 19. Desacoplando o código public int RotinaAcoplada(bool teste){ if (!teste) { return QuantidadeUsuarios(); return 0; } RotinaAcoplada(false);
  20. 20. Desacoplando o código public int RotinaAcoplada(bool teste, Func<int> query){ if (!teste) { return query(); return 0; } RotinaAcoplada(false, QuantidadeUsuarios);
  21. 21. Testando o código void TesteChamandoTrueRetornaZero (){ Assert.True(RotinaAcoplada(true, null), 0); } void TesteChamandoFalseChamaFuncao (){ Assert.True(RotinaAcoplada(false, ()=>27), 27); }
  22. 22. O código pode não funcionar, se acontecer não tente descobrir o que houve, dá revert e começa novamente. É mais seguro.
  23. 23. Código legado é aquele que não tem testes, neste caso é como uma rocha, que deve ser quebrada em pedaços até ser possível testar, caso ainda não consiga fazer testes, continue quebrando até conseguir.
  24. 24. “Desenvolver software é a arte de fazer maquinas calcularem, escrevendo poesias!”
  25. 25. Obrigado!

×