Я редко делаю это: -
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
для освобождения памяти, но я склонен делать это в особых случаях. В обычном коде я нахожу это редко необходимым.
Возможно, одним из факторов, стоящих за лагерем «Всегда ничего не устанавливать», является то, что многие разработчики VBScript пишут последовательные сценарии, которые не учитываются в процедурах Function
и Sub
.
person
AnthonyWJones
schedule
16.11.2011