Организация кода GUI - PullRequest
10 голосов
/ 07 мая 2009

Мой вопрос состоит из двух частей:

  • Есть ли у кого-нибудь какие-либо советы или ссылки на какую-либо документацию в Интернете о том, как писать код графического интерфейса, который легко читать, писать и поддерживать?

    Пример.

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


  • Как мне легко управлять настройками в приложении?

    Пример.

    Если пользователь выбирает новый элемент в раскрывающемся списке, мне может потребоваться включить некоторые компоненты в графическом интерфейсе, обновить файл конфигурации приложения и сохранить новое значение в локальной переменной для дальнейшего использования. Я обычно предпочитаю не создавать обработчики событий для всех настроек (см. Выше) и в конечном итоге использовать такие методы, как «LoadGUISettings» и «SaveGUISettings», но затем я в конечном итоге вызываю эти методы во всем коде, и он проходит через много кода просто для обновления очень мало, если таковые имеются, фактические изменения.

Спасибо!

Ответы [ 3 ]

6 голосов
/ 07 мая 2009

Некоторые рекомендации по первому вопросу с точки зрения ОО:

  • Разбейте большие классы на более мелкие. Есть ли на этой панели множество довольно модульных подпанелей? Создайте меньший класс для каждой подпанели, а затем попросите другой класс более высокого уровня собрать их все вместе.
  • Уменьшите дублирование. У вас есть два дерева, которые совместно используют функциональность? Сделай суперкласс! Все ваши обработчики событий делают что-то подобное? Создайте метод, который все они вызывают!

Второй вопрос. Я вижу два способа сделать это:

  • Слушатели. Если многие компоненты должны реагировать на изменения, произошедшие в одном компоненте, этот компонент запускает событие.
  • Глобальные переменные. Если многие компоненты читают и записывают одни и те же данные, сделайте их глобальными (однако вы делаете это на выбранном вами языке). Для дополнительной полезности объедините два подхода и дайте компонентам прослушивать изменения в глобальном объекте данных.
3 голосов
/ 07 мая 2009

Если вы используете WPF, вы можете прочитать Руководство по составным приложениям для WPF .

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

0 голосов
/ 07 мая 2009

Обязательно посмотрите Руководство Джереми Миллера по богатому дизайну клиента. Это неполно, но я считаю, что он пишет книгу на эту тему.

Еще один блог, который вы должны проверить, это Rich Newman's . Он пишет о Composite Application Block, который представляет собой руководство MS Best Practice о том, как структурировать богатых клиентов.

Вы также можете прочитать эту книгу , которая очень легкая для чтения, но дает вам хорошие идеи.

...