0 / 0 / 0
Регистрация: 26.06.2012
Сообщений: 21
|
|
1 | |
Правильная организация кода в проекте11.08.2012, 13:46. Показов 3324. Ответов 13
Метки нет Все метки)
(
Доброго дня!
При создании проекта для Windows генерятся два файла - файл формы и файл программы. Абсолютно во всех учебниках практикуется добавление кода только в файл формы. Я понимаю, что в файл программы должен вноситься код открытых статических методов для доступа из кода всего проекта, но... Научите, как правильно организовать код в проекте. Подскажите, где можно подробнее (понятнее) изучить этот вопрос. Заранее благодарен за помощь
0
|
|
11.08.2012, 13:46 | |
Ответы с готовыми решениями:
13
Серверная часть многопользовательского приложения: правильная организация Правильная организация поиска в SortedDictionary (метод ContainsValue()) Метод не наследуется: правильная организация наследования и доступа Правильная организация цепочки Tasks в бесконечном цикле (WinForms) |
![]() 17227 / 12679 / 3323
Регистрация: 17.09.2011
Сообщений: 20,950
|
|
11.08.2012, 13:51 | 2 |
Один файл - один класс.
Вот и вся, в общем-то, организация.
0
|
36 / 36 / 14
Регистрация: 05.06.2011
Сообщений: 306
|
|
11.08.2012, 22:58 | 3 |
может имеется ввиду что в файл Program.cs ничего обычно не следует добавлять, а вот в файле формы следует добавлять различные визуальные плюшки типа кнопок и т.д. а в самом файле form.cs уже следует код валять
0
|
![]() |
|
12.08.2012, 07:07 | 4 |
Одно скажу, не пихай в класс формы ничего, что не относится к форме конкретно. То есть не надо писать в классе формы в методах функционал проверки соединения с интернетом, то есть его выносим в отдельный класс. Короче любой функционал не относящийся к форме пишем в отдельных классах, только не забываем о логичности разделения, чтобы не нагородить чего-то неадекватного. Вообще, как советовал мне один программист, лучше поменьше делать статических вещей общедоступных, ладно, если к ним надо обращаться из форм, это может ещё нормально, но никак не стоит к таким статическим методам обращаться из классов организующих какой-то конкретный функционал. Чтобы эти классы можно было перенести в любой проект и там использовать. Я думаю как-то так.
Добавлено через 1 минуту Да мне кажется это для простоты изложения материала, чтобы было легче объяснить новичку не заморачиваясь на деталях.
1
|
11 / 11 / 0
Регистрация: 16.09.2013
Сообщений: 75
|
|
25.05.2015, 08:41 | 5 |
Чтоб не создавать новую тему...
Один и тот же код я могу написать как в классе формы так и в коде дизайнера. В дизайнере код добавляется автоматически когда я настраиваю туже форму через панель со свойствами. В некоторых учебниках (в частности Петцзольд) практикуют написание всех свойств в классе формы руками. Как правильно, грамотнее и пр.? или это дело вкуса?
0
|
![]() |
|
25.05.2015, 08:46 | 6 |
Просто как тебе удобно так и делаешь. По идее лучше через дизайнер всё настраивать, чтобы не было лишнего служебного, так скажем, кода, который будет в Code Behind окна. Я думаю, Петцзольд всё руками пишет для наглядности примеров.
Добавлено через 54 секунды Ну или ему просто так привычнее, так удобнее и т.д.
1
|
![]() |
|
25.05.2015, 08:48 | 7 |
Думаю да.
К примеру, все настройки я делаю через свойства, естественно они скрыты в дизайнере. А вот подключение обработчиков пишу руками, в конструкторе основной формы. Но это кому как, я так привык, кто-то может по другому.
1
|
11 / 11 / 0
Регистрация: 16.09.2013
Сообщений: 75
|
|
25.05.2015, 09:25 | 8 |
Ну и еще тогда детский вопрос.
Когда у меня грузится форма она должна быть инициализирована некоторыми свойствами в зависимости от... так вот где правильней проводить эту инициализацию? В конструкторе или Form_Load?
0
|
![]() 17227 / 12679 / 3323
Регистрация: 17.09.2011
Сообщений: 20,950
|
|
25.05.2015, 10:26 | 9 |
Так это же пример — он потому так и делается, чтобы можно было весь код выделить, скопировать в файл и получить готовое приложение, без дополнительных шагов вроде "бросьте на форму кнопку размером...".
Лучше в Load.
0
|
![]() |
|
25.05.2015, 10:37 | 10 |
Ну тут чисто логически рассуждаешь, если такие-то данные уже загружены, то берёшь эти данные и инциализируешь то, что дальше на очереди и инциализиуешь в том месте, где это просто физически возможно сделать (если нужные данные не проициализированы, то в том месте считаем, что физически не возможно
![]()
0
|
![]() 17227 / 12679 / 3323
Регистрация: 17.09.2011
Сообщений: 20,950
|
|
25.05.2015, 10:57 | 11 |
Тут вопрос не столько о заморачивании, сколько о применении: конструктор отрабатывает один раз, Load — каждый раз, когда форма открывается. Если форма многоразовая, то в лоад целесообразно пихать код, который имеет смысл выполнять при каждом ее открытии, например тиснуть свежие данные из базы или запускать какой-нибудь таймер обновлений.
0
|
![]() |
|||||||||||
25.05.2015, 11:06 | 12 | ||||||||||
kolorotur, нет же, 1 раз выполняется.
1
|
![]() 17227 / 12679 / 3323
Регистрация: 17.09.2011
Сообщений: 20,950
|
|
25.05.2015, 11:18 | 13 |
Casper-SC, да, вы правы, спасибо за поправку!
Почему-то я был уверен, что событие отрабатывает каждый раз.
0
|
![]() ![]() |
|
25.05.2015, 11:34 | 14 |
Касаемо сабжа. Я, например, считаю, что в главной форме вообще не должно быть кода. Весь функционал должен быть внутри UserControls, соответственно там и весь код обработчиков.
Задача главной формы - просто привязать данные к UserControl и отобразить их. Все. Такой подход позволяет 1) разделить код на логические части 2) Повторно использовать контролы с их функционалом в любом другом месте интерфейса.
0
|
25.05.2015, 11:34 | |
Помогаю со студенческими работами здесь
14
Правильная блокировка кода в многопоточном приложении Организация кода Разбор методов реализованных в проекте и разьяснение части кода Какой ссылки не хватает в проекте для работы приведенного кода Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |