Какие объекты, чтобы сделать глобальную, что делать местным?

StackOverflow https://stackoverflow.com//questions/20023693

  •  21-12-2019
  •  | 
  •  

Вопрос

Чтобы избежать модераторов, которые не любят общие вопросы, это Visio VBA, но я не хотел включить, что в названии, как это немного нише, и я думаю, что ответ может быть универсальным :-)

Мой код имеет следующие переменные:

Public gappVisio As Visio.Application
Public gdocFile As Visio.Document
Public gpagDiagram As Visio.Page
.

Для тех, кто развернут visio, вы создаете объект приложения, откройте документ, затем установите ссылку на страницу в документе, в котором вы можете сделать какой-то рисунок.

Все варианты глобальные, но фактически GDocfile используется только в моей процедуре инициализации. Таким образом, мой вопрос, мне нужен gdocfile как глобальный, или я могу просто сделать это местным? Я полагаю, я беспокоился, что, если бы он был локальным, когда он вышел из-за объема, он может привести к объекту документа, но мне все еще нужна страница документа?

Это имеет смысл?

Это было полезно?

Решение

Не делайте переменную или объект глобальной, если вы абсолютно не должны, что почти никогда.Передайте ссылки объектов в качестве параметров тем процедурам, которые они нуждаются в них - и только для тех.Все, что вам нужно от объекта до того, как он «заканчивается сферами», как вы говорите, следует передавать процедуру вызовов в виде значения возвращаемого функции (или, более непристойно, менее предпочтительно, значение параметра Subref).

Когда вы говорите, что объект не имеет возможности, это на самом деле эта ссылка на этот объект, который не имеет возможности.Объект все еще существует неизменным в памяти.

Как правило, глобальный плохой и приводит к сложному поддержанию кода, но исключения могут быть такими как универсальные константы, например,

Public Const PI As Double = 3.14159265358979
.

Хорошо, что есть как глобальный.

Другие советы

В вашем случае срок службы документа контролируется приложением Visio, док не будет очищен, независимо от того, сколько переменных, которые относятся к нему, вы создаете, или в которых они являются (глобальными или локальными).Средства, все ссылки, подсчитанные (Scoping) правила просто игнорируются Visio для документов, на самом деле - док не разрушен, даже если нет больше ссылок на него из вашего кода.

Вы можете сказать Visio, чтобы закрыть документ, используя Document.close.После этого вызова любая попытка использовать методы или свойства документа (или страниц), используя любые переменные документа / страницы, относящиеся к этому документу / странице в этом документе, приведет к исклюком.

Док может быть закрыт пользователем.В этом случае все переменные, относящиеся к ней (или объектам внутри него, такие как страницы или формы), станут недействительными.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top