O documento fornece dicas para trabalhar com código legado, incluindo refatorar código acoplado para permitir testes unitários, desacoplar métodos para torná-los testáveis e quebrar códigos complexos em partes menores até que possam ser testadas.
10. Crie Regions
public int RotinaAcoplada(boolean teste){
if (! teste){
var dao = new UsuarioDAO();
...
...
...
return dao.listarUsuarios().Count;
}
return 0;
}
11. Crie Regions
public int RotinaAcoplada(boolean teste){
if (! teste){
var dao = new UsuarioDAO();
#region Quantidade de Usuarios
...
#endregion
return dao.listarUsuarios().Count;
}
return 0;
}
12. Crie um metodo vazio com o nome da Region
public int QuantidadeUsuarios(){
var dao = new UsuarioDAO();
return dao.listarUsuarios().Count;
}
13. Copie o código da Region para o Método
public int QuantidadeUsuarios(){
var dao = new UsuarioDAO();
return dao.listarUsuarios().Count;
}
14. Neste momento o código não
compila e isso agora é bom.
Porque?
15. 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;
}
16. Chame o novo metodo no lugar
public int RotinaAcoplada(bool teste){
if (!teste) {
return QuantidadeUsuarios();
return 0;
}
19. 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.
20. Desacoplando o código
public int RotinaAcoplada(bool teste){
if (!teste) {
return QuantidadeUsuarios();
return 0;
}
RotinaAcoplada(false);
21. Desacoplando o código
public int RotinaAcoplada(bool teste,
Func<int> query){
if (!teste) {
return query();
return 0;
}
RotinaAcoplada(false, QuantidadeUsuarios);
23. O código pode não funcionar, se
acontecer não tente descobrir o
que houve, dá revert e começa
novamente. É mais seguro.
24. 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.