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

时间:2012-04-18 17:30:45

标签: vba coding-style vb6 standards

我在Visual Basic 6中编写了一些代码,我注意到我甚至不需要声明变量以便工作。

以下(明确声明):

Dim foo As String
foo = "Bar"

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

Dim foo
foo = "Bar"

或者这个(没有声明):

foo = "Bar"

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

关于Visual Basic 6(以及扩展VBA)哪个适当?

由于

4 个答案:

答案 0 :(得分:9)

这是一个很好的 HABIT

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

foo = "Bar"

这有助于稍后在代码中输入错误的变量名称......如果不是这样,你可以编写变量名称,程序编译但不起作用,而且很难将其挖掘出来。

答案 1 :(得分:9)

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

enter image description here

我想说这不仅仅是一种最佳做法;我认为这是程序员理智的要求。设置是持久的;一旦设置,它将保持启用状态。微软让它成为一个选项,因为一些旧版本的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对象(如果有人再这样做),则会产生一些问题。