Como trabalhar com código legado
-
Upload
sidney-filho -
Category
Documents
-
view
173 -
download
3
description
Transcript of Como trabalhar com código legado
![Page 1: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/1.jpg)
Como trabalhar com código legado
![Page 2: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/2.jpg)
Velho desenvolvimento. Novos paradigmas.
Será que sabemos realmente o que
estamos fazendo?
![Page 3: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/3.jpg)
Vou contar um pouco do que funcionou para mim e que pode
funcionar para você também!
![Page 4: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/4.jpg)
Ah é só botar breakpoint e tentar descobrir porque está falhando!
![Page 5: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/5.jpg)
Refatorar é como soltar um cordão trançado
![Page 6: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/6.jpg)
O objetivo ao refatorar um código super-acoplado é
sempre e a todo custo buscar a criação de teste unitários.
![Page 7: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/7.jpg)
Se não fizer isso.
![Page 8: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/8.jpg)
Se não fizer isso.
![Page 9: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/9.jpg)
![Page 10: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/10.jpg)
Crie Regionspublic int RotinaAcoplada(boolean teste){ if (! teste){ var dao = new UsuarioDAO(); ... ... ... return dao.listarUsuarios().Count; } return 0;}
![Page 11: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/11.jpg)
Crie Regionspublic int RotinaAcoplada(boolean teste){ if (! teste){ var dao = new UsuarioDAO(); #region Quantidade de Usuarios ... #endregion return dao.listarUsuarios().Count; } return 0;}
![Page 12: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/12.jpg)
Crie um metodo vazio com o nome da Region
public int QuantidadeUsuarios(){ var dao = new UsuarioDAO(); return dao.listarUsuarios().Count;
}
![Page 13: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/13.jpg)
Copie o código da Region para o Método
public int QuantidadeUsuarios(){ var dao = new UsuarioDAO(); return dao.listarUsuarios().Count;
}
![Page 14: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/14.jpg)
Neste momento o código não compila e isso agora é bom.
Porque?
![Page 15: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/15.jpg)
Chame o novo metodo no lugarpublic int RotinaAcoplada(boolean teste){ if (! teste){ var dao = new UsuarioDAO(); #region Quantidade de Usuarios ... #endregion return dao.listarUsuarios().Count; } return 0;}
![Page 16: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/16.jpg)
Chame o novo metodo no lugarpublic int RotinaAcoplada(bool teste){ if (!teste) { return QuantidadeUsuarios();
return 0;}
![Page 17: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/17.jpg)
Agora sim está pronto.
Obrigado!
![Page 18: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/18.jpg)
O método anterior continua acoplado e não dá
para testar, resolva isso.
![Page 19: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/19.jpg)
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.
![Page 20: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/20.jpg)
Desacoplando o códigopublic int RotinaAcoplada(bool teste){
if (!teste) { return QuantidadeUsuarios();
return 0;}
RotinaAcoplada(false);
![Page 21: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/21.jpg)
Desacoplando o códigopublic int RotinaAcoplada(bool teste, Func<int> query){ if (!teste) { return query();
return 0;}
RotinaAcoplada(false, QuantidadeUsuarios);
![Page 22: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/22.jpg)
Testando o códigovoid TesteChamandoTrueRetornaZero (){ Assert.True(RotinaAcoplada(true, null), 0);}
void TesteChamandoFalseChamaFuncao (){ Assert.True(RotinaAcoplada(false, ()=>27), 27);}
![Page 23: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/23.jpg)
O código pode não funcionar, se acontecer não tente descobrir o que houve, dá revert e começa
novamente. É mais seguro.
![Page 24: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/24.jpg)
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.
![Page 25: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/25.jpg)
“Desenvolver software é a arte de fazer maquinas calcularem,
escrevendo poesias!”
![Page 26: Como trabalhar com código legado](https://reader034.fdocumentos.tips/reader034/viewer/2022052601/558fc2561a28abe7668b4744/html5/thumbnails/26.jpg)
Obrigado!