Рефакторинг приложения Windows Forms - PullRequest
0 голосов
/ 02 августа 2009

Я занимаюсь разработкой приложения для форм Windows. Это было в основном смешано с BDUP и прототипированием.

У меня около 1500 строк кода (исключая сгенерированный IDE частичный класс ... 1465, если быть точным) в форме, и форма имеет 6 вкладок (9 вложенных вкладок). Не имеет более 10 элементов управления в каждой форме, поэтому решение для нескольких форм будет излишним.

У меня есть набор классов сущностей, которые при сериализации дают мне представление XML, которое я сохраняю в файле XML. Я инкапсулировал это с шаблоном Repository, чтобы в будущем я мог переместить хранилище в базу данных. Форма использует классы сущностей (для сохранения / редактирования) и фабрику репо (добавление, получение и сохранение).

Теперь моя проблема в том, что большая часть из 1500 строк кода связана с взаимодействием между элементами пользовательского интерфейса (выбор в Combo отключает некоторые элементы или отображает различные элементы в сетке, обрабатывает переходы вкладок (кнопки «Далее» / «Назад») загрузка меню (каждый отдельный элемент в репозитории XML-файлов становится элементом меню), режим нового / редактирования и т. д. (у меня есть три различных набора нового / редактирования в одной форме).

  1. Каков наилучший подход для устранения взаимодействия элементов? Допустим, в будущем я могу решить сделать его веб-интерфейсом.
  2. Что еще более важно, какие комбинированные рефакторинги я могу применить?
  3. Какие шаблоны я должен рефакторинг в / в?

Спасибо за помощь.

Примечание: я читаю Рефакторинг в Шаблоны ... В частности, я хотел бы получить "советы" / советы по Рефакторингу в MVC ...

Ответы [ 2 ]

2 голосов
/ 03 августа 2009

Мартин Фаулер описывает различные архитектурные шаблоны пользовательского интерфейса в этой статье . Это довольно долго, но стоит прочитать. После этого вы сможете определить, какие шаблоны и архитектурные модели лучше всего подходят для вашего сценария.

В конце раздела «Контроллер модельного представления» этой статьи Фаулер упоминает эти пункты, которые вам подходят:

  • Сделайте сильное разделение между представлением (представление и контроллер) и доменом (модель) - Отдельная презентация.
  • Разделение виджетов GUI на контроллер (для реагирования на пользовательские стимулы) и представление (для отображения состояния модели). Контроллер и представление должны (в основном) взаимодействовать не напрямую, а через модель.
  • Имейте представления (и контроллеры), наблюдающие модель, чтобы позволить нескольким виджетам обновляться без необходимости прямого взаимодействия - Синхронизация Наблюдателя.

См. Статью и ее ссылки для получения дополнительной информации. Удачи!

0 голосов
/ 02 августа 2009

Вам следует изучить шаблон проектирования Model-View-Controller (MVC), чтобы абстрагировать бизнес-логику от логики отображения.

Существует также другая разновидность того же понятия, которая называется Presenter Model Viewer.

Оба из них широко документированы в сети.

С уважением, Joon

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...