Я унаследовал проект, где диаграммы классов очень похожи на паутину на тарелке спагетти. За последние два месяца я написал около 300 единичных тестов, чтобы предоставить себе сеть безопасности, охватывающую основной исполняемый файл.
У меня есть библиотека гибких книг разработки в пределах досягаемости в любой момент:
- Эффективная работа с устаревшим кодом
- Рефакторинг
- Код завершен.
- Шаблоны и практики Agile Principles на С#
- и др.
Проблема заключается в том, что все, что я касаюсь, похоже, сломает что-то другое. Классы пользовательского интерфейса имеют смешанную бизнес-логику и код базы данных. Существуют взаимные зависимости между несколькими классами. Там пара божественных классов, которые ломаются каждый раз, когда я меняю любой из других классов. Также существует мутантный одноэлементный/полезный класс с примерно половинными методами экземпляра и половинными статическими методами (хотя по иронии судьбы статические методы полагаются на экземпляр и методы экземпляра).
Мои предшественники даже подумали, что было бы разумно использовать все наборы данных назад. Каждое обновление базы данных отправляется непосредственно на сервер db в качестве параметров хранимой процедуры, затем данные обновляются вручную, поэтому пользовательский интерфейс отображает самые последние изменения.
Мне иногда кажется, что они использовали какую-то форму слабого обфускации для обеспечения безопасности работы или как последнее прощание, прежде чем передать код.
Есть ли хорошие ресурсы для распутывания этого беспорядка? Книги, которые у меня есть, полезны, но, похоже, охватывают только половину сценариев, в которых я сталкиваюсь.