Vba 我应该在VB6中显式声明变量吗

Vba 我应该在VB6中显式声明变量吗,vba,coding-style,vb6,standards,Vba,Coding Style,Vb6,Standards,我正在用VisualBasic6编写一些代码,我注意到我甚至不需要为工作声明变量 以下(明确声明): 似乎与此(隐式声明)一样有效: 或本(无声明): 我知道在C#中,我需要在使用变量之前声明它,隐式和显式声明都是可以接受的。我还知道,在Python中,在使用变量之前根本不需要声明它们 关于VisualBasic6(以及扩展的VBA),哪个是合适的 谢谢,这是个好习惯 有一个VB选项称为option Explicit。设置为ON时,VB会强制您在使用变量之前声明变量:不再声明 foo = "Ba

我正在用VisualBasic6编写一些代码,我注意到我甚至不需要为工作声明变量

以下(明确声明):

似乎与此(隐式声明)一样有效:

或本(无声明):

我知道在C#中,我需要在使用变量之前声明它,隐式和显式声明都是可以接受的。我还知道,在Python中,在使用变量之前根本不需要声明它们

关于VisualBasic6(以及扩展的VBA),哪个是合适的

谢谢,这是个好习惯

有一个VB选项称为option Explicit。设置为ON时,VB会强制您在使用变量之前声明变量:不再声明

foo = "Bar"

这有助于稍后在代码中错误键入变量名。。。如果没有它,您可以键入变量名,您的程序可以编译但无法运行,很难找出它。

在“工具/选项”的“编辑器”选项卡中,选中“需要变量声明”复选框。这将自动向每个新代码模块添加显式选项


我想说这不仅仅是一种最佳实践;我认为这是对程序员理智的要求。设置是持久的;设置后,它将保持启用状态。Microsoft之所以选择此选项,是因为某些旧版本的VB没有此功能,这也解释了为什么默认情况下禁用此功能。

我强烈建议您始终声明变量。这可以通过在每个代码模块中设置Option Explicit来强制实现。您可以通过转到编辑器选项卡中的“工具”->“选项”->“检查需要变量声明”,让VB6自动为您执行此操作

如果不使用Option Explicit,则每次引用以前未知的变量名时,都会自动为您创建一个变量。这是一种非常危险的行为,因为如果您键入错误的变量名,将为您创建一个空变量,从而导致代码的意外行为

您不必声明变量的类型,但我也建议您这样做。变量的缺省类型是可变的,如果您正在为C++或C语言创建COM对象(如果有人这样做),则会产生一些性能开销,并会产生一些问题。 我应该在VB6中显式声明变量吗

对。为什么?

这不仅仅是因为它是一个好习惯或是必须的,而是因为我在这篇文章中提到的一个主要原因

VB将变量默认为Variant类型。变型 变量可以保存任何类型的数据,从字符串到整数,再到长字符串 整数、日期、货币等。默认情况下,“变量”是 “最慢”类型的变量

正如我前面提到的,如果不指定 变量,VB默认变量为Variant类型。你呢 我不希望这样,因为它会减慢你的代码作为VB编译器 需要时间来决定使用哪种类型的变量。变体 也应避免,因为他们有责任造成可能的后果 “类型不匹配错误”

主题:“犯错”是人类的行为(见第3点)

链接:

上面的链接还包括与编码相关的其他部分,您可以/应该注意这些部分


HTH

+1。您还可以在每个模块中使用
defoj A-Z
,以避免在没有类型的情况下写入
Dim foo
,从而意外忽略该类型。对…的赞誉。。。哦,顺便说一句,这个词的拼写错误是故意的:)+1。您还可以在每个模块中使用
defoj A-Z
,以避免在没有类型的情况下写入
Dim foo
,从而意外忽略该类型。荣誉+1一个非常好的问题+1声明变量总是好的。然而,如果您不声明它们,那么就在它们后面加上适当的标识符,如$,&等,这样它们就不会被假定为变量。e、 g.abc$是字符串,xyz&将是长字符串等。
Dim foo
foo = "Bar"
foo = "Bar"
foo = "Bar"