Я редко делаю это: -
Set foo = Nothing
Вот почему ...
Рассмотрим: -
Function DoStuff()
Dim foo : Set foo = CreateObject("lib.thing")
''# Code that uses foo
Set foo = Nothing
End Function
Поскольку foo
собирается пройтиВ любом случае, назначение Nothing
на foo
является излишним, поэтому я не беспокоюсь.
Рассмотрим: -
Function DoStuff()
Dim foo : Set foo = CreateObject("lib.thing")
''# Code that uses foo
Set foo = Nothing
''# Loads more code that doesn't use foo
End Function
Теперь это случай, когда назначение Nothing
делаетсмысл, так как в противном случае он держится потенциально намного дольше, чем необходимо. Однако в таких случаях код является кандидатом на рефакторинг.Тот факт, что функция продолжает делать гораздо больше вещей, не нуждающихся в foo
, указывает на то, что foo
-использующий кусок кода на самом деле принадлежит своей собственной функции: -
Function DoStuff()
''# Code that calls FooUsage
''# Loads more code that doesn't use foo
End Function
Function FooUsage(someParams)
Dim foo : Set foo = CreateObject("lib.thing")
''# Code that uses foo
FooUsage = someResult
End Function
Есть случаи, когдаЖелательно назначить Nothing
для освобождения памяти, но я склонен делать это в особых случаях.В обычном коде я нахожу это редко необходимым.
Возможно, один из драйверов лагеря "Всегда устанавливать ничего" - это то, что многие VBScripters пишут последовательные сценарии, которые не учитываются в процедурах Function
и Sub
..