Насколько я понимаю (я ошибался раньше), в VB (A) нет повышения эффективности. Объявление любой переменной в любом месте подпрограммы будет использовать те же ресурсы (хотя ваша переменная не будет доступна до тех пор, пока не будет объявлена ниже ее).
Объявление переменной объекта (Dim
) только создает ссылку, но не создает экземпляр объекта до Set
. Однако обратите внимание на противоположную проблему в такой конструкции:
Dim rsFoo As New ADODB.Recordset
'other statements
With rsFoo
.LockType = adBatchOptimistic
'other statements
End With
Кажется, это может быть удобно, так как вам не нужно делать явное Set... = New...
. Но суть в том, что каждый каждый раз, когда вы используете rsFoo
во время выполнения, код должен проверять, был ли он создан. Намного лучше так:
Dim rsFoo As ADODB.Recordset
'other statements
Set rsFoo = New ADODB.Recordset
With rsFoo
.LockType = adBatchOptimistic
'other statements
End With
Это, в некоторой степени, «религиозное» различие, по крайней мере, в языках, где нет реальной разницы в накладных расходах. Наиболее распространенная практика в VB (A) - объявлять все переменные в начале процедуры, хотя есть некоторые, которые утверждают, что держать объявление как можно ближе к первому использованию «яснее» (не для тех, кто условно ожидать их всех в начале, это не ...).