Ich habe ein Projekt geerbt, bei dem die Klassendiagramme einem Spinnennetz auf einem Teller Spaghetti ähneln. Ich habe in den letzten zwei Monaten über 300 Unit-Tests geschrieben, um mir ein Sicherheitsnetz zu geben, das die Haupt-Executable abdeckt.Legacy Code Nightmare
Ich habe meine Bibliothek von agilen Entwicklungs Büchern in greifbarer Nähe zu einem bestimmten Zeitpunkt:
- Effektives Arbeiten mit Legacy Code
- Refactoring
- Code Complete
- Agile Prinzipien Muster und Praktiken in C#
- usw.
Das Problem ist, alles, was ich berühren, etwas anderes zu brechen scheint. Die UI-Klassen enthalten Geschäftslogik und Datenbankcode. Es bestehen gegenseitige Abhängigkeiten zwischen einer Reihe von Klassen. Es gibt ein paar Gott-Klassen, die jedes Mal brechen, wenn ich eine der anderen Klassen ändere. Es gibt auch eine mutierte Singleton/Utility-Klasse mit etwa halb Instanz-Methoden und halb statischen Methoden (obwohl ironischerweise die statischen Methoden auf der Instanz beruhen und die Instanz-Methoden nicht).
Meine Vorgänger dachten sogar, dass es klug wäre, alle Datensätze rückwärts zu verwenden. Jedes Datenbankupdate wird als Parameter in einer gespeicherten Prozedur direkt an den Datenbankserver gesendet. Anschließend werden die Datensätze manuell aktualisiert, sodass die Benutzeroberfläche die neuesten Änderungen anzeigt.
Ich bin manchmal versucht zu glauben, dass sie eine Form der schwachen Verschleierung entweder für die Sicherheit des Arbeitsplatzes oder als letzten Abschied vor der Übergabe des Codes benutzt haben.
Gibt es irgendwelche guten Mittel, um dieses Durcheinander zu entwirren? Die Bücher, die ich habe, sind hilfreich, scheinen aber nur die Hälfte der Szenarien zu erfassen, in die ich hineingeraten bin.
arbeitest du an meinem alten ort? ;) – geocoin