Estou trabalhando em um projeto "código-espaguete" e, enquanto corrigo bugs e implemento novos recursos, também faço refatoração para tornar o código testável por unidade.
O código geralmente é tão fortemente acoplado ou complicado que a correção de um pequeno bug resultaria na reescrita de muitas classes. Então, decidi desenhar uma linha em algum lugar do código em que paro de refatorar. Para deixar isso claro, deixo alguns comentários no código que explicam a situação, como:
class RefactoredClass {
private SingletonClass xyz;
// I know SingletonClass is a Singleton, so I would not need to pass it here.
// However, I would like to get rid of it in the future, so it is passed as a
// parameter here to make this change easier later.
public RefactoredClass(SingletonClass xyz) {
this.xyz = xyz;
}
}
Ou outro pedaço de bolo:
// This might be a good candidate to be refactored. The structure is like:
// Version String
// |
// +--> ...
// |
// +--> ...
// |
// ... and so on ...
//
Map map = new HashMap<String, Map<String, Map<String, List<String>>>>();
isso é uma boa ideia? O que devo ter em mente ao fazer isso?