gpt4 book ai didi

vba - 为什么我们要在模块的开头声明变量?

转载 作者:行者123 更新时间:2023-12-01 01:13:12 25 4
gpt4 key购买 nike

作为我的第一语言,并且完全从其他人的例子中学到,我从未质疑 VBA 中的标准做法,即在模块、例程或函数的开头对所有变量声明进行分组,如本例所示。

Sub Traditional()
Dim bVariable as Boolean
Dim OtherVariable
' Some code using OtherVariable goes here
'
' Now we use bVariable
bVariable = True
Do While bVariable
bVariable = SomeFunction()
Loop
End Sub

现在我正在学习其他语言的标准做法是声明变量尽可能接近它们的使用位置,如下所示:
Sub Defensive()
Dim OtherVariable as String
' Some code using OtherVariable goes here
'
' Now we use bVariable
Dim bVariable as Boolean
bVariable = True
Do While bVariable
bVariable = SomeFunction()
Loop
End Sub

作为一种防御性编程实践,这对我来说似乎是完全明智的——因为它限制了跨度和生存时间(如 Code Complete 中所述),所以我想知道是否有任何理由不在 VBA 中做同样的事情?我能想到的可能原因是内存、运行时间(例如,在循环内重复声明)、传统 - 可以说是一个很好的理由,因为必须有成千上万的 VBA 程序员希望在例程开始时看到所有使用的变量。有没有我错过的可以解释这种做法的好处或至少它来自哪里?

最佳答案

我在顶部声明了所有变量。我认为宣布它们更接近于首先使用掩码(至少)应该首先解决的另外两个问题。

  • 程序太长:如果您的程序超出了屏幕的大小,可能是它做的太多了,应该分成更小的 block 。您还会发现,当您的程序很小且只做一件事时,单元测试更容易编写。
  • 变量太多:如果你有一堆相关变量,考虑使用自定义类模块或用户定义类型。它将使代码更具可读性和更易于维护。

  • 如果您的过程很短并且您正在使用类和 UDT,那么在使用点声明变量的好处就会减少或消除。

    关于vba - 为什么我们要在模块的开头声明变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13856351/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com