声明变量并将它们传递给两个函数之一,还是在每个函数中声明变量?(可能 VB.NET 具体)



我有两个函数处理相似但不同的数据。因此,有些变量在两者之间使用,有些则不使用。

以下哪一个会更好?

在决定函数的函数中声明变量并将它们作为参数传递:

Private Sub ProcessData(ByVal x)
    Dim a = 1, b = "a", c = new SomeObject(x)
    If condition Then
        ProcessDataA(x, a, b, c)
    Else
        ProcessDataB(x, a, b, c)
    End If
End Sub
Private Sub ProcessDataA(ByVal x, ByVal a, ByVal b, ByVal c)
    ' code
End Sub
Private Sub ProcessDataB(ByVal x, ByVal a, ByVal b, ByVal c)
    ' code
End Sub

或者不传递参数而只是实例化变量两次?

Private Sub ProcessData(ByVal x)
    If condition Then
        ProcessDataA(x)
    Else
        ProcessDataB(x)
    End If
End Sub
Private Sub ProcessDataA(ByVal x)
    Dim a = 1, b = "a", c = new SomeObject(x)
    ' code
End Sub
Private Sub ProcessDataB(ByVal x)
    Dim a = 1, b = "a", c = new SomeObject(x)
    ' code
End Sub

一方面,第一种方法可以防止代码重复,但我不确定编译器/解释器如何处理它,或者这种方法是否有一些我不知道的开销。

如果答案因语言/编译器而异,我对 .NET 框架或 VB.NET 特别好奇。

谢谢!

a时,bc 对于每个ProcessData方法将始终具有相同的值,而不是坚持第一个选项。这样,您可以避免在程序中引入错误,例如,当这些变量之一必须更改一次并且您忘记了两种方法之一时。

此外,根据您的示例代码,可以将ab定义为类中的常量。

尽量避免复制和粘贴。"不要重复自己"

如果变量实际上没有任何有用的值,那么在我的观点中,最好将它们保留在方法的本地。 传入的意外值是否可能导致错误?

这取决于变量实例化的"昂贵"程度。如果对象的构造在性能或资源方面很昂贵,当然最好创建一次并将它们传递给方法。
如果你想让你的方法彼此独立,并且结构不昂贵,在本地创建它们是一个很好的和干净的方法。
由于 ProcessDataA 和 ProcessDataB 都是私有的,因此您可以在以后轻松更改方法。

相关内容

  • 没有找到相关文章

最新更新