Функции и процедуры в QTP / VBA / VB6

В чем разница между функцией и процедурой? Aprart от возвращаемого значения Поскольку функция также может использоваться как процедура, если вы не возвращаете никакого значения, то в чем разница ... тогда в чем польза функций? Укажите, пожалуйста, сценарий, в котором мы можем использовать функции и процедуры ??


person user3304401    schedule 13.02.2014    source источник


Ответы (1)


Поскольку в вашем заголовке указаны VBA и VB6, я буду ссылаться на тип подпрограмм, используемых этими языками. VBA и VB6 используют «Function» для подпрограмм, которые возвращают значение, и «Sub» для тех, которые этого не делают. Конечно, можно использовать функцию для всех ваших подпрограмм и просто игнорировать возвращаемое значение. В отличие от C ++ и многих других языков, вам не требуется возвращать значение из функции VB. Поскольку VB автоматически инициализирует все переменные значениями по умолчанию (ноль для числовых типов, False для Boolean, пустая строка для String и т. Д.), Любые функции, которые явно не возвращают значение, просто вернут свое значение по умолчанию, которое вы можете игнорировать. Например:

Function MyFunc() As Long
    ' Nothing here
End Function

Эта функция вернет нулевое значение.

Поэтому, хотя вы можете использовать Function вместо Sub и просто игнорировать возвращаемые значения, это не очень хорошая практика программирования. Другие пользователи вашего кода будут считать, что вы выбрали Function вместо Sub, потому что вы намеревались вернуть что-то значимое, и, вероятно, будут удивлены, обнаружив, что вы вообще ничего не возвращаете!

Также МОЖЕТ быть небольшое снижение производительности при использовании Function vs Sub из-за дополнительного значения параметра, которое передается в стек вызовов (возвращаемое значение).

person Bond    schedule 17.02.2014