Это равноценно?

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Это равноценно?

Сообщение Saturn.65 » 17.01.2009 (Сб) 11:05

Например: на форме три кнопки. Две из них выполняют свои команды, а третья кнопка выполняет команды первых двух кнопок. Обязательно ли вписывать в команду третьей кнопки команды первых двух?
Код: Выделить всё
Private Sub Command1_Click()
    Команда1
    Команда2
    Команда3
End Sub
Private Sub Command2_Click()
    Команда11
    Команда22
    Команда33
End Sub
Private Sub Command3_Click()
    Команда1
    Команда2
    Команда3
    Команда11
    Команда22
    Команда33
End Sub

Или можно упростить?
Код: Выделить всё
Private Sub Command3_Click()
    Command1_Click
    Command2_Click
End Sub

Работать то будет, а вот как по функциональности? Хуже или без разницы?
Главное, ребята, сердцем не стареть...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Это равноценно?

Сообщение tyomitch » 17.01.2009 (Сб) 11:26

Второй вариант существенно лучше.

Если в программе нечто повторяется дважды, это показатель, что она плохо написана. (См. тж. viewtopic.php?f=27&t=27324)
Изображение

Александр Дмитриев
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 296
Зарегистрирован: 05.01.2005 (Ср) 3:39
Откуда: Санкт-Петербург    Куда: /dev/null

Re: Это равноценно?

Сообщение Александр Дмитриев » 17.01.2009 (Сб) 11:28

ИМХО Полностью равноценно, так что более приемлем второй вариант. Происходит простой вызов функции. Но, может быть, лучше эти действия (Команда1, Команда2, Команда3, Команда11, Команда22, Команда33) выделить в две отдельных процедуры и вызывать их из обработчиков событий?

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Re: Это равноценно?

Сообщение Saturn.65 » 17.01.2009 (Сб) 13:33

Спасибо за ответы. Я именно так и писал, как во втором варианте, но вот сомневался, правильно ли делаю.
Главное, ребята, сердцем не стареть...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Это равноценно?

Сообщение alibek » 19.01.2009 (Пн) 17:39

tyomitch писал(а):Если в программе нечто повторяется дважды, это показатель, что она плохо написана. (См. тж. viewtopic.php?f=27&t=27324)

Не обязательно.
Задачи всякие бывают, и в некоторых производительность гораздо важнее, чем изящность кода.
В SQL такое повсюду.
Lasciate ogni speranza, voi ch'entrate.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Это равноценно?

Сообщение jangle » 19.01.2009 (Пн) 18:01

Saturn.65 писал(а):Работать то будет, а вот как по функциональности? Хуже или без разницы?


Зависит от задачи, если у тебя в цикле десятки тысяч раз вызывается Command3_Click (расчет какой-нибудь трехмерки например). То лучше, вызывать процедуры так:

Код: Выделить всё
    Команда1
    Команда2
    Команда3
    Команда11
    Команда22
    Команда33


выиграешь несколько процентов производительности

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Это равноценно?

Сообщение tyomitch » 19.01.2009 (Пн) 19:39

Несколько процентов на вызов процедуры?
Не верю. Если внутри неё самой есть хоть что-нибудь осмысленное, разница должна быть в доли процента.
Изображение


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 42

    TopList  
cron