0 / 0 / 0
Регистрация: 26.06.2012
Сообщений: 21
1

Правильная организация кода в проекте

11.08.2012, 13:46. Показов 3324. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня!
При создании проекта для Windows генерятся два файла - файл формы и файл программы. Абсолютно во всех учебниках практикуется добавление кода только в файл формы. Я понимаю, что в файл программы должен вноситься код открытых статических методов для доступа из кода всего проекта, но...
Научите, как правильно организовать код в проекте.
Подскажите, где можно подробнее (понятнее) изучить этот вопрос.
Заранее благодарен за помощь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.08.2012, 13:46
Ответы с готовыми решениями:

Серверная часть многопользовательского приложения: правильная организация
Есть идея многопользоветельского шутера но нет опыта в данном вопросе... Что почитать? Интересует...

Правильная организация поиска в SortedDictionary (метод ContainsValue())
Здравствуйте, уважаемые Форумчане! В созданной коллекции SortedDictionary необходимо найти элемент...

Метод не наследуется: правильная организация наследования и доступа
Представьте, есть класс Base и класс Child, который наследуется от него. Допустим, у класса Base...

Правильная организация цепочки Tasks в бесконечном цикле (WinForms)
как правильно реализовать подобное? Когда код что-то типа такого - while (true) {...

13
Эксперт .NET
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
Цитата Сообщение от Giant Panda Посмотреть сообщение
Доброго дня!
При создании проекта для Windows генерятся два файла - файл формы и файл программы. Абсолютно во всех учебниках практикуется добавление кода только в файл формы. Я понимаю, что в файл программы должен вноситься код открытых статических методов для доступа из кода всего проекта, но...
Научите, как правильно организовать код в проекте.
Подскажите, где можно подробнее (понятнее) изучить этот вопрос.
Заранее благодарен за помощь
может имеется ввиду что в файл Program.cs ничего обычно не следует добавлять, а вот в файле формы следует добавлять различные визуальные плюшки типа кнопок и т.д. а в самом файле form.cs уже следует код валять
0
Эксперт .NET
4431 / 2091 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
12.08.2012, 07:07 4
Одно скажу, не пихай в класс формы ничего, что не относится к форме конкретно. То есть не надо писать в классе формы в методах функционал проверки соединения с интернетом, то есть его выносим в отдельный класс. Короче любой функционал не относящийся к форме пишем в отдельных классах, только не забываем о логичности разделения, чтобы не нагородить чего-то неадекватного. Вообще, как советовал мне один программист, лучше поменьше делать статических вещей общедоступных, ладно, если к ним надо обращаться из форм, это может ещё нормально, но никак не стоит к таким статическим методам обращаться из классов организующих какой-то конкретный функционал. Чтобы эти классы можно было перенести в любой проект и там использовать. Я думаю как-то так.

Добавлено через 1 минуту
Цитата Сообщение от Giant Panda Посмотреть сообщение
Абсолютно во всех учебниках практикуется добавление кода только в файл формы.
Да мне кажется это для простоты изложения материала, чтобы было легче объяснить новичку не заморачиваясь на деталях.
1
11 / 11 / 0
Регистрация: 16.09.2013
Сообщений: 75
25.05.2015, 08:41 5
Чтоб не создавать новую тему...

Один и тот же код я могу написать как в классе формы так и в коде дизайнера. В дизайнере код добавляется автоматически когда я настраиваю туже форму через панель со свойствами. В некоторых учебниках (в частности Петцзольд) практикуют написание всех свойств в классе формы руками. Как правильно, грамотнее и пр.? или это дело вкуса?
0
Эксперт .NET
4431 / 2091 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
25.05.2015, 08:46 6
Цитата Сообщение от Shoorup_SCBist Посмотреть сообщение
В некоторых учебниках (в частности Петцзольд) практикуют написание всех свойств в классе формы руками. Как правильно, грамотнее и пр.? или это дело вкуса?
Просто как тебе удобно так и делаешь. По идее лучше через дизайнер всё настраивать, чтобы не было лишнего служебного, так скажем, кода, который будет в Code Behind окна. Я думаю, Петцзольд всё руками пишет для наглядности примеров.

Добавлено через 54 секунды
Ну или ему просто так привычнее, так удобнее и т.д.
1
Эксперт .NET
5490 / 4260 / 1211
Регистрация: 12.10.2013
Сообщений: 12,262
Записей в блоге: 2
25.05.2015, 08:48 7
Цитата Сообщение от Shoorup_SCBist Посмотреть сообщение
это дело вкуса?
Думаю да.
К примеру, все настройки я делаю через свойства, естественно они скрыты в дизайнере. А вот подключение обработчиков пишу руками, в конструкторе основной формы. Но это кому как, я так привык, кто-то может по другому.
1
11 / 11 / 0
Регистрация: 16.09.2013
Сообщений: 75
25.05.2015, 09:25 8
Ну и еще тогда детский вопрос.
Когда у меня грузится форма она должна быть инициализирована некоторыми свойствами в зависимости от...
так вот где правильней проводить эту инициализацию? В конструкторе или Form_Load?
0
Эксперт .NET
17227 / 12679 / 3323
Регистрация: 17.09.2011
Сообщений: 20,950
25.05.2015, 10:26 9
Цитата Сообщение от Shoorup_SCBist Посмотреть сообщение
В некоторых учебниках (в частности Петцзольд) практикуют написание всех свойств в классе формы руками.
Так это же пример — он потому так и делается, чтобы можно было весь код выделить, скопировать в файл и получить готовое приложение, без дополнительных шагов вроде "бросьте на форму кнопку размером...".

Цитата Сообщение от Shoorup_SCBist Посмотреть сообщение
где правильней проводить эту инициализацию? В конструкторе или Form_Load?
Лучше в Load.
0
Эксперт .NET
4431 / 2091 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
25.05.2015, 10:37 10
Цитата Сообщение от Shoorup_SCBist Посмотреть сообщение
так вот где правильней проводить эту инициализацию? В конструкторе или Form_Load?
Ну тут чисто логически рассуждаешь, если такие-то данные уже загружены, то берёшь эти данные и инциализируешь то, что дальше на очереди и инциализиуешь в том месте, где это просто физически возможно сделать (если нужные данные не проициализированы, то в том месте считаем, что физически не возможно ). А можешь не заморачиваться и правда в Load.
0
Эксперт .NET
17227 / 12679 / 3323
Регистрация: 17.09.2011
Сообщений: 20,950
25.05.2015, 10:57 11
Цитата Сообщение от Casper-SC Посмотреть сообщение
можешь не заморачиваться и правда в Load.
Тут вопрос не столько о заморачивании, сколько о применении: конструктор отрабатывает один раз, Load — каждый раз, когда форма открывается. Если форма многоразовая, то в лоад целесообразно пихать код, который имеет смысл выполнять при каждом ее открытии, например тиснуть свежие данные из базы или запускать какой-нибудь таймер обновлений.
0
Эксперт .NET
4431 / 2091 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
25.05.2015, 11:06 12
kolorotur, нет же, 1 раз выполняется.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
    public partial class Form1 : Form
    {
        private Form2 _form;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        public Form2 Form
        {
            get
            {
                if (_form == null)
                {
                    _form = new Form2();
                }
                return _form;
            }
        }
 
        private void ShowButton_Click(object sender, EventArgs e)
        {
            Form.Show();
        }
 
        private void HideButton_Click(object sender, EventArgs e)
        {
            Form.Hide();
        }
    }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    public partial class Form2 : Form
    {
        private int _counter;
 
        public Form2()
        {
            InitializeComponent();
        }
 
        private void Form2_Load(object sender, EventArgs e)
        {
            label1.Text = (++_counter).ToString();
        }
    }
1
Эксперт .NET
17227 / 12679 / 3323
Регистрация: 17.09.2011
Сообщений: 20,950
25.05.2015, 11:18 13
Casper-SC, да, вы правы, спасибо за поправку!
Почему-то я был уверен, что событие отрабатывает каждый раз.
0
Эксперт .NETАвтор FAQ
10377 / 5108 / 1824
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
25.05.2015, 11:34 14
Касаемо сабжа. Я, например, считаю, что в главной форме вообще не должно быть кода. Весь функционал должен быть внутри UserControls, соответственно там и весь код обработчиков.
Задача главной формы - просто привязать данные к UserControl и отобразить их. Все.
Такой подход позволяет 1) разделить код на логические части 2) Повторно использовать контролы с их функционалом в любом другом месте интерфейса.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.05.2015, 11:34
Помогаю со студенческими работами здесь

Правильная блокировка кода в многопоточном приложении
Есть приложение, работающее многопоточно с очередями. Т.е. В очереди добавляются элементы, но вот...

Организация кода
Задача такая: Открывается окно, где требуется ввести путь до БД. Вводишь правильный путь, затем...

Разбор методов реализованных в проекте и разьяснение части кода
Программа предназначенна для чтения файлов логов, больших обьемов, я не сосвсем понимаю как она...

Какой ссылки не хватает в проекте для работы приведенного кода
Вот все ссылки, используемые в проекте: Microsoft.DirectX Microsoft.DirectX.Direct3D...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru