重复的代码和方法重载/覆盖

时间:2012-05-18 20:48:03

标签: .net vb.net

这是关于面向对象的一般性问题,特别是在.NET(或任何其他框架或语言)中重载函数。我正在寻找一个有很多重复代码的应用程序。例如,看看以下函数:

Public Function Test(ByVal Test1 As String)

//code that is specifically relevant to Test1 variable

End Function

Public Function Test (ByVal Test1 As String, ByVal Test2 As String)
    //code that is specifically relevant to Test1 variable
    //code that is specifically relevant to Test2 variable
End Function

我认为最好的做法是将://代码与Test1变量在一个单独的函数中特别相关,因为它在两个函数中都很常见。是这样的吗?我一直以为重复的代码是个坏主意。

2 个答案:

答案 0 :(得分:2)

这不是更好:

Public Function Test(ByVal Test1 As String) 
    //code that is specifically relevant to Test1 variable
End Function 

Public Function Test (ByVal Test1 As String, ByVal Test2 As String) 
    Test(Test1)
    //code that is specifically relevant to Test2 variable 
End Function 

理想情况下,重载应该是为原始函数添加附加功能,但保留原始行为,以防您在代码中的其他位置使用它。

答案 1 :(得分:1)

通常情况下,如果可能的话,我会做这样的事情:

Public Function Test(ByVal Test1 As String)
    Test(Test1, Nothing)
End Function

Public Function Test (ByVal Test1 As String, ByVal Test2 As String)
    ' code that is specifically relevant to Test1 variable
    If Test2 IsNot Nothing Then
        ' code that is specifically relevant to Test2 variable
    End If
End Function