Ich arbeite an einem "Spaghetti-Code" -Projekt, und während ich Fehler behebe und neue Funktionen implementiere, führe ich auch einige Umgestaltungen durch, um den Code Unit-testbar zu machen.
Der Code ist oft so eng miteinander verbunden oder kompliziert, dass das Beheben eines kleinen Fehlers dazu führen würde, dass viele Klassen neu geschrieben werden. Also habe ich beschlossen, irgendwo im Code eine Linie zu ziehen, an der ich mit dem Refactoring aufhöre. Um dies zu verdeutlichen, füge ich einige Kommentare in den Code ein, die die Situation erklären, wie zum Beispiel:
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;
}
}
Oder ein weiteres Stück Kuchen:
// 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>>>>();
Ist das eine gute Idee? Was muss ich dabei beachten?