Рефакторинг для отделения бизнес-логики от кода - PullRequest
2 голосов
/ 28 октября 2009

Я унаследовал проект asp.net и обнаружил, что код на страницах содержит много бизнес-логики.

Я решил, что в большинстве случаев лучше оставить рабочий код на месте, чем пытаться провести масштабный рефакторинг. Однако есть страницы, которые выполняют функции, которые можно повторно использовать в утилитах командной строки для пакетной обработки. Я хотел бы сосредоточить свои усилия на этих страницах, рефакторинг бизнес-логики и ссылки на это в других утилитах.

В настоящее время я пытаюсь провести рефакторинг этой конкретной страницы, которая содержит 6200 строк кода. Я обнаружил, что это очень утомительная работа, пытаясь найти зависимости между кодом позади и объектами, специфичными для страницы.

Мне интересно, знает ли кто-нибудь инструмент, функцию VS или метод, который позволил бы мне систематически обнаруживать и атаковать эти зависимости? Что-то, что позволит мне идентифицировать любую область кода, которая ссылается на ViewState, текстовое поле, панель, раскрывающийся список и т. Д., Так что я могу переместить эти ссылки на параметры метода и в конечном итоге переместить эту функциональность из класса страницы. 1007 *

Ответы [ 3 ]

3 голосов
/ 29 октября 2009

Я бы начал с изучения любого метода, который не следует Принципу единой ответственности , и разбил бы их так, чтобы они соответствовали. Как только это будет сделано, вы должны иметь представление о том, что делает код, и вы должны иметь возможность более легко группировать код и перемещать его в выделенные классы для тех групп, которые создают необходимые объекты для использования в процессе работы. Я считаю ReSharper очень полезным инструментом, который поможет сделать все это. В конечном итоге вам всегда нужно будет иметь полное представление об основах кода, прежде чем вы сможете успешно выполнить рефакторинг.

Мы все были там в какой-то момент, и у вас есть мое глубочайшее сочувствие, но ваша готовность сделать это вообще означает, что вы уже движетесь в правильном направлении. Удачи!

0 голосов
/ 29 октября 2009

Ничего себе, прежде всего, жаль, что здесь. Любой, кто поместит 6000 строк кода в код, заслуживает того, чтобы его ударили :))

Теперь я уже проводил такой рефакторинг раньше. Я хотел бы подойти к этому в несколько шагов:

(1) Создание логических областей #Region и #EndRegion Like - Сохранить методы, методы загрузки или (2) Проверьте, можете ли вы создавать физические бизнес-объекты на основе этих регионов в своем бизнесе. слой (3) Как только вы закончите, просто отошлите весь код в соответствующий класс.

Я понимаю, вам нужен какой-то инструмент, чтобы все это исчезло, но я боюсь, что, сделав это, вы выкопаете яму. Понимание кода и его перемещение по методам даст вам лучшее понимание.

0 голосов
/ 28 октября 2009

Я могу сразу подумать, что можно скомпилировать, затем собрать сборки и проанализировать сборку, используя NDepend

http://www.ndepend.com/Features.aspx#DependencyCycle

alt text
(источник: ndepend.com )

...