5

我正在用 Visual Basic 6 编写一些代码,我注意到我什至不需要声明变量就可以工作。

以下(明确声明):

Dim foo As String
foo = "Bar"

似乎和这个(隐式声明)一样有效:

Dim foo
foo = "Bar"

或者这个(没有声明):

foo = "Bar"

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

关于 Visual Basic 6(以及扩展的 VBA),哪个是正确的?

谢谢

4

4 回答 4

9

这是一个很好的习惯

有一个名为 Option Explicit 的 VB 选项。将其设置为 ON,然后 VB 会强制您在使用变量之前声明它:不再

foo = "Bar"

这有助于稍后在您的代码中输入错误的变量名......没有它,您可以输入变量名,您的程序编译但不会工作,而且很难挖掘出来。

于 2012-04-18T17:38:34.043 回答
9

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

在此处输入图像描述

我想说这不仅仅是一个最佳实践。我认为这是对程序员理智的要求。设置是持久的;一旦设置,它就会保持启用状态。微软之所以选择它是因为一些旧版本的 VB 没有该功能,这也解释了为什么它默认被禁用。

于 2012-04-18T18:04:41.837 回答
7

我应该在 VB6 中明确声明我的变量吗?

是的。为什么?

不仅因为这是一个好习惯或必须这样做,还因为我在这篇文章中也提到了一个主要原因。

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

正如我前面提到的,如果不指定变量的类型,VB 默认变量为 Variant 类型。而且您不希望这样做,因为它会减慢您的代码,因为 VB 编译器需要时间来决定您使用哪种变量。还应避免变体,因为它们会导致可能的“类型不匹配错误”。

主题:“犯错”是人之常情(见第 3 点)

链接:http ://siddharthout.wordpress.com/2011/08/01/to-err-is-human/

上面的链接还涵盖了与可以/应该注意的编码相关的其他部分。

高温高压

于 2012-04-18T23:17:45.273 回答
4

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

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

您不必声明变量的类型但我也建议您这样做。变量的默认类型是 Variant,如果您正在创建供 C++ 或 C# 使用的 COM 对象(如果有人再这样做的话),它的性能开销很小并且会产生一些问题。

于 2012-04-18T18:15:38.350 回答