21 / 20 / 3
Регистрация: 10.11.2012
Сообщений: 240
Записей в блоге: 1
1

ООП как будет правильнее а как будет работать быстрее

24.05.2013, 10:08. Показов 759. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Начнем с моего примера...
Подключение к базе данных Access, но суть идет не о том как подключиться а как более правильно писать
C#
1
2
3
4
5
6
7
8
9
10
                DAdapter.InsertCommand = new OleDbCommand("insert into DataBase values(@Home,@Area,@Cash,@Phone)", ConnectDB);
 
                DAdapter.InsertCommand.Parameters.Add("@Home", OleDbType.VarChar).Value = comboBox_Home.Text;
                DAdapter.InsertCommand.Parameters.Add("@Area", OleDbType.VarChar).Value = textBox_Area.Text;
                DAdapter.InsertCommand.Parameters.Add("@Cash", OleDbType.VarChar).Value = numeric_Cash.Value;
                DAdapter.InsertCommand.Parameters.Add("@Phone", OleDbType.VarChar).Value = textBox_Phone.Text;
 
                ConnectDB.Open();
                DAdapter.InsertCommand.ExecuteNonQuery();
                ConnectDB.Close();
Вкратце тут подключается к базе данных и заносит значения в таблицу из comboBox_Home, textBox_Area, numeric_Cash, textBox_Phone

Хотелось сделать отдельный метод потомучто этот код в проекте встречается 4 раза но параметры заносятся разные
Например во так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        private void InsertToDataBase(string _Home,string _Area,double _Cash,string _Phone, string D_Base)
        {
                DAdapter.InsertCommand = new OleDbCommand("insert into '" + D_Base + "' values(@Home,@Area,@Cash,@Phone)", ConnectDB);
                DAdapter.InsertCommand.Parameters.Add("@Home", OleDbType.VarChar).Value = _Home;
                DAdapter.InsertCommand.Parameters.Add("@Area", OleDbType.VarChar).Value = _Area;
                DAdapter.InsertCommand.Parameters.Add("@Cash", OleDbType.VarChar).Value = _Cash;
                DAdapter.InsertCommand.Parameters.Add("@Phone", OleDbType.VarChar).Value = _Phone;
 
                ConnectDB.Open();
                DAdapter.InsertCommand.ExecuteNonQuery();
                ConnectDB.Close();        
        }
 
///и на кнопке вызов метода
        private void button_Start_Click(object sender, EventArgs e)
        {
            InsertToDataBase(comboBox_Home.Text.ToString(), textBox_Area.Text.ToString(), numeric_Cash.Value.ToString(), textBox_Phone.Text.ToString(), "Base6");
        
        }
У меня есть 3 вопроса,
первый: правильнее будет записывать отдельный метод с созданием переменных в которые будут заноситься значения?
второй: Так как в методе создаются новые переменные то программка(я так понимаю) будет выделять больше памяти, это будет заметно на не мощном компе (P3 2GHz, 1Gb Ram, WinXP)
Третий: Какой способ будет работать быстрее? Когда отдельно без метода просто каждую комманду вручную прописывать или в методе?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2013, 10:08
Ответы с готовыми решениями:

Как будет быстрее и производительнее: проверять существование файла или обрабатывать исключение
Пишу программу которая подгружает много файлов картинок JPEG, и когда файла с заданным именем нет,...

Как зарегистрировать хоткей, который будет работать если даже окно программы не выделено
Как зарегистрировать хоткей, который будет работать если даже окно программы не выделено?

Что будет быстрее и рентабельние использовать XML или Sqlite?
Задача следующая: Получаю массив строк, и нужно узнать если ли каждая из этих строк в моей базе....

Как заставить функцию работать быстрее?
Может кто подсказать в плане оптимизации как заставить функцию Check() работать быстрее? Применил...

4
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
24.05.2013, 11:02 2
Цитата Сообщение от rull Посмотреть сообщение
правильнее будет записывать отдельный метод с созданием переменных в которые будут заноситься значения?
Да
Так как в методе создаются новые переменные то программка(я так понимаю) будет выделять больше памяти, это будет заметно на не мощном компе (P3 2GHz, 1Gb Ram, WinXP)
Нет, разницы нету, ну вообще то вроде как должна, я в таких вопросах не спец, но если вам так нужна скорость, то можно передавать ссылки на переменные ( ref - почитай на msdn ).
Какой способ будет работать быстрее? Когда отдельно без метода просто каждую комманду вручную прописывать или в методе?
Без разницы, но правильнее оформить в виде метода.
В вопросе выделения памяти тебе нужно подождать ответа от более продвинутых

Добавлено через 13 минут
И кстати у вас тема называется ООП, а это не ООП а функциональный подход.
1
192 / 192 / 29
Регистрация: 03.12.2009
Сообщений: 853
24.05.2013, 11:57 3
Вообще в правильном коде ничего повторятся не должно, так что однозначно нужно выносить в отдельный метод.
1
1272 / 973 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
24.05.2013, 12:22 4
первый: да правильно отдельный метод
второй: нет не будет ничего выделяться, никаких реф тоже не надо
третий: отпадает т.к вариант с методом не имеет негативных последствий

на самом деле конечно вызов метода имеет значение, но это из серии что круче ++i или i++
т.е об этом не стоит задумываться пока нету цикла на несметные миллионы итераций
1
21 / 20 / 3
Регистрация: 10.11.2012
Сообщений: 240
Записей в блоге: 1
24.05.2013, 12:45  [ТС] 5
Всем спасибо! Просто хочу свой проект сделать соблюдая, хоть не все, но основные правила
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2013, 12:45
Помогаю со студенческими работами здесь

Будет ли С# работать с DirectX
Будет ли С# работать с DirectX?

Будет ли блокировка работать правильно?
У меня в коде много блокировок. Хотел немного сократить код и написал небольшой велосипед. Скажите...

Будет ли работать FileSystemWatcher в Linux
Всем привет! Возник такой вопрос - будет ли работать FileSystemWatcher в Linux. Просто нет...

Если while будет завершён, то пустой Thread всё равно будет выполняться?
Возник вопрос. Если while() будет завершён, то пустой Thread всёравно будет выполняться? ...

Будет ли работать оператор using в приведенном коде?
Здравствуйте! Допустим, у меня есть некоторая функция, будет ли работать в этом случае using? ...

На каких ОС будет работать программа на NET?
Здравствуйте. Хочу написать программу, которая будет запускать как на Windows так и на Mac OS....


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

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

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