Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Дремучий лес обработчиков формы


Автор: semibug 7.10.2011, 09:39
Новичок в NET и вообще в оконном программировании.
Проект на  C++/CLI (VS2005)
Создал форму с кнопочками-меню в дизайнере, двойными кликами нагенерировал события.
Бизнес функцию приложение выполняет, но беспокоит концентрация кода в одном файле (Form1.cpp), затруднена навигация, читаемость.
Вопросы:
1. Как сделать более читаемым код.
2. Какие есть удобные способы навигации по методам большого класса, расположенного в одном файле.
3. Некоторые функции дублируются в меню и на тулбаре, можно ли както их связать, а не сводить к одному действию через дополнительный метод.

Автор: Cheloveck 7.10.2011, 13:00
Цитата(semibug @  7.10.2011,  10:39 Найти цитируемый пост)
1. Как сделать более читаемым код.

Прочесть книгу http://www.ozon.ru/context/detail/id/6733562/
Цитата(semibug @  7.10.2011,  10:39 Найти цитируемый пост)

2. Какие есть удобные способы навигации по методам большого класса, расположенного в одном файле.

Прочесть книгу http://www.ozon.ru/context/detail/id/6733562/. Больших классов быть не должно!
Цитата(semibug @  7.10.2011,  10:39 Найти цитируемый пост)
3. Некоторые функции дублируются в меню и на тулбаре, можно ли както их связать, а не сводить к одному действию через дополнительный метод. 

Естесственно, ты можешь назначить и элементу меню, и кнопке тулбара один и тот же обработчик. Это можно и из дизайнера сделать.

Автор: semibug 7.10.2011, 14:25
Цитата(Cheloveck @  7.10.2011,  13:00 Найти цитируемый пост)
Больших классов быть не должно!

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

Добавлено через 2 минуты и 12 секунд
Цитата(Cheloveck @  7.10.2011,  13:00 Найти цитируемый пост)
Естесственно, ты можешь назначить и элементу меню, и кнопке тулбара один и тот же обработчик. Это можно и из дизайнера сделать.

В исходном сообщении не полностью выразил свою мысль, хотелось бы управлять и кнопкой и пунктом меню как одним объектом, например включать/выключать одновременно. Понмю в Delphi были такие компоненты, вроде Action, через которые можно было централизовано отключить кнопку и пункт меню например.

Автор: Cheloveck 7.10.2011, 15:03
Цитата(semibug @  7.10.2011,  15:25 Найти цитируемый пост)
теряется возможность использования визуального редактирования

Никогда не пользуюсь дизайнерами. Они много гадят в коде. Могу, разве что, подсмотреть, что он генрит в спорных ситуациях, например в лейаутах. Но в конечных продуктах весь код написан вручную.

Цитата(semibug @  7.10.2011,  15:25 Найти цитируемый пост)
управлять и кнопкой и пунктом меню как одним объектом

Создай такой объект =) Если серьёзно, чем очевиднее у тебя будет код, тем меньше проблем ты получишь при его сопровождении. То есть метод DisableItem(SomeID id), в котором ты деактивируешь конпку и пункт меню будет гараздо лучше, чем когда ты где-то в одном месте свяжешь объекты в один...

Автор: semibug 8.10.2011, 09:59
Cheloveck, спасибо.
Избавляюсь от дизайнера.
Также помогло раскидывание обработчиков по разным файлам  в виде partial классов.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)