Я занимаюсь большим рефакторингом проекта, и я задал этот вопрос , чтобы подтвердить / понять направление, в котором я должен идти, и я думаю, что получил ответ, который хотел, а невыбросить годами ценность кода.Итак, теперь начинается задача рефакторинга кода.Я читал книги Мартина Фаулера и Мартина Фезерса, и у них есть много понимания, но я ищу совет относительно конечной цели, где я хочу, чтобы приложение было.
Итак, еще раз повторим приложение, это динамическая система форм, с большим количеством логики проверки и логики данных между полями.Основная вставляемая запись - это набор полей формы на странице.Другая часть этого - «Действия», которые вы можете сделать для человека.Эти «Действия» могут отличаться от клиента к клиенту, и существуют сотни «Действия».Говорят также, что мы можем каким-то образом создать движок, который может в конечном итоге взять на себя другие аналогичные области, где «человек» может быть чем-то другим (например, студентом или сотрудником).Поэтому я хочу построить что-то очень не связанное.У нас одна кодовая база, но разные БД для разных клиентов.Набор полей формы на странице является динамическим, но БД - нет - он преобразуется в конкретную таблицу БД с помощью хранимых процедур.Итак, общий набор полей отправляется в сохраненный процесс, и затем сохраненный процесс решает, что делать с полями (выяснить, к какой таблице он должен перейти).Эти таблицы на самом деле довольно статичны, что означает, что они на самом деле не являются динамическими, и в них есть определенная структура.
Что мне особенно не нравится, так это то, как настроить хороший способ управления динамическими формамистр.Кажется, что большая часть логики будет в коде на странице UI / aspx.cs, потому что его загрузка контролирует веб-страницу.Есть ли какой-то способ, которым я могу сделать это, так что это делается в обтекаемой форме, чтобы страница aspx.cs не была длиной 5000 строк?У меня есть объект 'FORM', и одним из свойств является его '' FIELDS ''.Таким образом, этот объект загружается на бизнес-уровне и на уровне данных, но теперь на переднем крае он должен циклически просматривать ПОЛЯ и выводить элементы управления на страницу.Кроме того, в некотором роде было бы полезно иметь возможность контролировать размещение - не знаю, как получить это в этой модели ...
Кроме того, с другой точки зрения - как я могу «реально» получитьэто в объектно-ориентированную структуру?Потому что технически они могут создавать формы чего угодно.И эти поля формы могут представлять любой объект.Так, например, сегодня они могут создать набор полей формы, которые представляют «человека» - завтра они могут создать набор полей формы, которые представляют «мебель».Как я могу перевести это человеку или предмету мебели (или я должен даже пытаться?).И у меня на самом деле нет контроля над полями формы, потому что они могут создавать что угодно ....
Любой мыслительный процесс был бы действительно полезен - спасибо!