我在Visual Basic 6中编写了一些代码,我注意到我甚至不需要声明变量以便工作。
以下(明确声明):
Dim foo As String
foo = "Bar"
似乎与此一样(隐式声明):
Dim foo
foo = "Bar"
或者这个(没有声明):
foo = "Bar"
我知道在C#中我需要在使用它之前声明一个变量,并且隐式和显式声明都是可以接受的。我也知道在Python中,在使用它们之前根本不会声明变量。
关于Visual Basic 6(以及扩展VBA)哪个适当?
由于
答案 0 :(得分:9)
这是一个很好的 HABIT 。
有一个名为Option Explicit的VB选项。将此设置为ON,然后VB强制您在使用之前声明变量:不再
foo = "Bar"
这有助于稍后在代码中输入错误的变量名称......如果不是这样,你可以编写变量名称,程序编译但不起作用,而且很难将其挖掘出来。
答案 1 :(得分:9)
在工具/选项,编辑器标签中,选中需要变量声明复选框。这会自动为每个新代码模块添加 Option Explicit 。
我想说这不仅仅是一种最佳做法;我认为这是程序员理智的要求。设置是持久的;一旦设置,它将保持启用状态。微软让它成为一个选项,因为一些旧版本的VB没有这个功能,这也解释了默认情况下禁用它的原因。
答案 2 :(得分:7)
我应该在VB6中明确声明我的变量吗?
是。为什么呢?
不仅因为这是一个好习惯,还是一个必须,但由于我在这篇文章中提到的唯一一个主要原因。
VB将变量默认为Variant类型。变体类型 变量可以包含从字符串,整数到长整数的任何数据 整数,日期,货币等。默认情况下,“变量”是 “最慢”类型的变量。
和
正如我前面提到的,如果你没有指定的类型 变量,VB默认变量为Variant类型。你呢 不希望这样,因为它会减慢你的代码作为VB编译器 花时间来决定你正在使用什么样的变量。变种 也应避免,因为他们有责任造成可能 “类型不匹配错误”。
主题:'Err'是人类(参见第3点)
链接:http://siddharthrout.wordpress.com/2011/08/01/to-err-is-human/
以上链接还包括与编码相关的其他部分,可以/应该处理。
HTH
答案 3 :(得分:4)
我强烈建议您始终声明您的变量。可以通过在每个代码模块中设置Option Explicit来强制执行此操作。您可以通过转到Tools-> Options,在编辑器选项卡中选中需要变量声明,让VB6自动为您执行此操作。
如果您不使用Option Explicit,那么每次引用以前未知的变量名时,都会自动为您创建变量。这是一种非常危险的行为,因为如果您输入错误的变量名称,将为您创建一个空变量,从而导致代码出现意外行为。
你没有必须声明变量的类型,但我也建议你这样做。变量的默认类型是Variant,它具有较小的性能开销,如果您要创建供C ++或C#使用的COM对象(如果有人再这样做),则会产生一些问题。