在VB6中,我是否应该显式声明变量?

5
我是一名有用的助手,可以为您进行文本翻译。以下是需要翻译的内容:

我正在使用Visual Basic 6编写一些代码,我注意到即使不声明变量,事情也能正常工作。

下面是显式声明:

Dim foo As String
foo = "Bar"

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

Dim foo
foo = "Bar"

或者这样(没有声明):
foo = "Bar"

我知道在C#中,我需要在使用变量之前声明它,隐式和显式声明都是可以接受的。我也知道在Python中,在使用变量之前不需要声明变量。
关于Visual Basic 6(以及VBA),哪种方式是正确的?
谢谢
4个回答

9
在“工具/选项”中的编辑器选项卡下,勾选“要求变量声明”复选框。这将自动向每个新代码模块添加“Option Explicit”。
我认为这不仅仅是最佳实践,更是程序员理智的要求。此设置是持久的,一旦设置,它将保持启用。微软将其作为一个选项,是因为旧版VB没有这个功能,并且这也解释了为什么默认情况下禁用该功能。

9

这是一个好的习惯

VB语言有一个名为Option Explicit的选项。当其设置为ON时,VB会强制要求在使用变量之前先声明它:不再需要

foo = "Bar"

这可以帮助您在代码后期避免变量名的拼写错误... 如果没有它,您可能会拼写变量名的字母位置错误,程序虽然编译通过但无法正常工作,而且很难找出问题所在。


你也可以在每个模块中使用 DefObj A-Z,这样写 Dim foo 而不带类型就会变得非常不可能遗漏类型。致敬 Jim Mack……哦,顺便说一下,“typo” 中的拼写错误是否是故意的 :) - MarkJ

7
我应该在VB6中明确声明变量吗?
是的。为什么?
不仅因为这是一个好习惯或必须这样做,而是因为只有一个主要原因,我在本帖中也提到了。
VB默认将变量设置为Variant类型。Variant类型变量可以保存任何类型的数据,从字符串到整数、长整数、日期、货币等等。默认情况下,“Variant”是“最慢”的变量类型。
并且,正如我之前提到的,如果您没有指定变量的类型,VB会默认将变量设置为Variant类型。您不希望出现这种情况,因为它会减慢代码速度,因为VB编译器需要时间来确定您正在使用哪种类型的变量。应该避免使用Variant,因为它们会导致可能的“类型不匹配错误”。
主题:犯错是人性(见第3点)
链接:http://siddharthrout.wordpress.com/2011/08/01/to-err-is-human/ 上面的链接还涵盖了与编码相关的其他部分,人们可以/应该注意。
希望对你有所帮助。

声明变量总是一个好习惯。然而,如果您没有声明它们,则应该使用适当的标识符如 $、& 等来作为后缀,以便它们不被认为是变量。例如,abc$ 是字符串,xyz& 就是长整型等。 - Pradeep Kumar

4

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

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

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


+1. 您还可以在每个模块中使用 DefObj A-Z,以使您不会意外地通过编写 Dim foo 而省略类型。向 Jim Mack 致敬。 - MarkJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接