When to rewrite a code base from scratch

Ich denke an Joel Spolskys Artikel zurück, in dem es darum ging, Code niemals von Grund auf neu zu schreiben. Um sein Argument zusammenzufassen: Der Code wird nicht rostig, und obwohl er nach vielen Wartungsversionen nicht schön aussieht, funktioniert er, wenn er funktioniert. Dem Endbenutzer ist es egal, wie hübsch der Code ist.

Sie können den Artikel hier lesen:Dinge, die Sie niemals tun sollten

Ich habe kürzlich ein Projekt übernommen und nachdem ich den Code durchgesehen habe, ist es ziemlich schrecklich. Ich dachte sofort an Prototypen, die ich zuvor gebaut hatte, und erklärte ausdrücklich, dass sie nicht für Produktionsumgebungen verwendet werden sollten. Aber natürlich hören die Leute nicht zu.

Der Code ist als Website aufgebaut, ohne Trennung von Bedenken, ohne Komponententests und ohne Code-Vervielfältigung überall. Keine Datenschicht, keine echte Geschäftslogik, es sei denn, Sie zählen eine Reihe von Klassen in App_Code.

Ich habe den Beteiligten empfohlen, den vorhandenen Code beizubehalten und Fehlerbehebungsversionen sowie einige kleinere Feature-Releases durchzuführen. Wir sollten jedoch sofort mit dem Umschreiben beginnen, um die testgetriebene Entwicklung zu berücksichtigen und die Bedenken klar voneinander zu trennen . Ich denke an die ASP.NET MVC Route.

Meine einzige Sorge ist natürlich, wie lange es dauern könnte, von Grund auf neu zu schreiben. Es ist nicht ganz kompliziert, ziemlich einfach Web-Anwendung mit Mitgliedschaft, etc ..

Ist jemand von euch auf ein ähnliches Problem gestoßen? Hast du bestimmte Schritte unternommen?

AKTUALISIEREN:

Also, wofür habe ich mich entschieden? Ich habe mich für Matts Ansatz entschieden und viele Bereiche umgestaltet.

Da App_Code ziemlich groß wurde und somit die Erstellungszeit verlangsamte, entfernte ich viele der Klassen und konvertierte sie in eine Klassenbibliothek.

Ich habe eine sehr einfache Datenzugriffsebene erstellt, die alle ADO-Aufrufe enthielt, und ein SqlHelper-Objekt erstellt, um diese Aufrufe auszuführen.

Ich habe eine sauberere Protokollierung implementiert
Lösung, die viel prägnanter ist.

Ich arbeite zwar nicht mehr an diesem Projekt [Finanzierung, Politik, bla bla], aber ich denke, es hat mir einen enormen Einblick gegeben, wie schlecht einige Projekte geschrieben werden können und welche Schritte ein Entwickler unternehmen kann, um die Dinge viel sauberer, lesbarer und gerechter zu gestalten Mit kleinen, inkrementellen Schritten im Laufe der Zeit besser abflachen.

Antworten auf die Frage(17)

Ihre Antwort auf die Frage