Я вспоминаю статью Джоэла Спольского о том, чтобы никогда не переписывать код с нуля. Подводя итог его аргументации: код не становится ржавым, и, хотя он может не выглядеть довольно после многих релизов обслуживания, если он работает, он работает. Конечным пользователям все равно, насколько хорош код.
Вы можете прочитать статью здесь: Вещи, которые вы не должны делать
Недавно я взял проект и, просмотрев их код, выглядел довольно ужасно. Я сразу подумал о прототипах, которые я построил ранее, и прямо заявил, что его нельзя использовать для какой-либо производственной среды. Но, конечно, люди не слушают.
Код построен как веб-сайт, не имеет разделения проблем, нет модульного тестирования и дублирования кода во всем мире. Нет уровня данных, нет реальной бизнес-логики, если вы не подсчитаете кучу классов в App_Code.
Я сделал рекомендацию держателям акций, что, хотя мы должны хранить существующий код и выпускать исправления ошибок, а также некоторые незначительные выпуски функций, мы должны немедленно переписать его с помощью Test Driven Development и с четким разделение проблем. Я думаю о том, чтобы перейти по пути ASP.NET MVC.
Моя единственная забота - это, конечно, время, которое может потребоваться, чтобы переписать с нуля. Это не совсем сложно, довольно запущен веб-приложение мельницы с членством и т.д.
Есть ли у кого-нибудь из вас подобная проблема? Какие конкретные шаги вы предприняли?
UPDATE:
Итак... Что я в итоге решил сделать? Я принял подход Мэтта и решил реорганизовать многие области.
- Так как App_Code получал довольно большой и, таким образом, замедляет сборку время, я удалил многие из классов и превратили их в класс Библиотека.
-
Я создал очень простой доступ к данным Слой, содержащий все ADO вызовы и создал объект SqlHelper для выполнения этих вызовов.
-
Я реализовал более чистое протоколирование
решение, которое гораздо более кратким.
Пока я больше не работаю над этим проектом [финансирование, политика, бла-бла], я думаю, что это дало мне некоторое представление о том, как плохо можно написать некоторые проекты, и шаги, которые один разработчик может предпринять, чтобы сделать вещи намного чище, легко читаемый и просто плоский с небольшими, постепенными шагами с течением времени.