When to rewrite a code base from scratch

Wracam do artykułu Joela Spolsky'ego o tym, że nigdy nie przepisuję kodu od nowa. Podsumowując jego argument: kod nie jest zardzewiały i choć może nie wyglądać ładnie po wielu wydaniach konserwacyjnych, jeśli działa, działa. Użytkownik końcowy nie dba o to, jak ładny jest kod.

Możesz przeczytać artykuł tutaj:Rzeczy, których nigdy nie powinieneś robić

Niedawno przejąłem projekt i po przejrzeniu jego kodu jest to okropne. Natychmiast pomyślałem o prototypach, które zbudowałem wcześniej i wyraźnie stwierdziłem, że nie powinien być używany w żadnym środowisku produkcyjnym. Ale oczywiście ludzie nie słuchają.

Kod jest zbudowany jako strona internetowa, nie ma rozdzielenia obaw, testów jednostkowych i powielania kodu wszędzie. Brak warstwy danych, brak prawdziwej logiki biznesowej, chyba że liczysz kilka klas w App_Code.

Poleciłem zainteresowanym stronom, że chociaż powinniśmy zachować istniejący kod i wprowadzać poprawki do błędów, a także kilka mniejszych wydań funkcji, powinniśmy zacząć przepisywać go od razu z myślą o Test Driven Development i wyraźnym oddzieleniu obaw . Myślę o przejściu na ASP.NET MVC.

Moim jedynym zmartwieniem jest oczywiście czas potrzebny na przepisanie od podstaw. To nie jest całkowicie skomplikowane, ładny przebieg aplikacji internetowej młyna z członkostwem itd.

Czy któryś z was natknął się na podobny problem? Jakieś konkretne kroki, które podjąłeś?

AKTUALIZACJA:

Więc .. Co postanowiłem zrobić? Wziąłem podejście Matta i postanowiłem zmienić wiele obszarów.

Ponieważ App_Code stawał się dość duży i spowalniał czas kompilacji, usunąłem wiele klas i przekonwertowałem je na bibliotekę klas.

Stworzyłem bardzo prostą warstwę dostępu do danych, która zawierała wszystkie wywołania ADO i stworzyła obiekt SqlHelper do wykonywania tych wywołań.

Zaimplementowałem czystsze logowanie
rozwiązanie, które jest znacznie bardziej zwięzłe.

Chociaż nie pracuję już nad tym projektem [finansowanie, polityka, bla bla], myślę, że dało mi to olbrzymi wgląd w to, jak źle można napisać niektóre projekty i jakie kroki może podjąć jeden z programistów, aby rzeczy były o wiele czystsze, czytelniejsze i po prostu lepiej z małymi, stopniowymi krokami w czasie.

questionAnswers(17)

yourAnswerToTheQuestion