Je travaille sur un projet "spaghetti-code", et pendant que je corrige des bugs et implémente de nouvelles fonctionnalités, je fais aussi quelques refactoring afin de rendre le code testable à l'unité.
Le code est souvent si étroitement couplé ou compliqué que la correction d'un petit bug entraînerait la réécriture de nombreuses classes. J'ai donc décidé de tracer une ligne quelque part dans le code où j'arrête le refactoring. Pour que cela soit clair, je laisse quelques commentaires dans le code expliquant la situation, comme:
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, un autre morceau de gâteau:
// 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>>>>();
Est-ce une bonne idée? Que dois-je garder à l'esprit lorsque je le fais?