Vb.net 重构可能返回返回值的函数
我正在处理一个非常大的函数中的一些旧代码,我需要编写一个新函数,从旧函数调用几次。此新函数将提供有关我是否需要在旧函数的早期返回的信息 我的问题是什么是更直接或更好的方式来完成下面的内容?我如何重构它 我想另一种提问方式是..返回Vb.net 重构可能返回返回值的函数,vb.net,refactoring,return,Vb.net,Refactoring,Return,我正在处理一个非常大的函数中的一些旧代码,我需要编写一个新函数,从旧函数调用几次。此新函数将提供有关我是否需要在旧函数的早期返回的信息 我的问题是什么是更直接或更好的方式来完成下面的内容?我如何重构它 我想另一种提问方式是..返回的更好方式是什么 Public Class ExampleClass ''' <summary> ''' This function calls another function ''' </summary> ''' <returns&g
的更好方式是什么
Public Class ExampleClass
''' <summary>
''' This function calls another function
''' </summary>
''' <returns></returns>
Protected Overridable Function FunctionOne() As Boolean
FunctionOne = False
Dim lobjOne, lobjTwo, lobjThree As Object
Dim lblnExit As Boolean = False
'
' Some logic here (manipulates/gets objects)
'
lblnExit = FunctionTwo(lobjOne, lobjTwo)
If lblnExit Then
Return lblnExit
ElseIf lobjOne.This.That > 2 Then
Return lblnExit
End If
'
' Some more logic here (manipulates objects)
'
lblnExit = FunctionTwo(lobjOne, lobjTwo)
If lblnExit Then
Return lblnExit
ElseIf lobjOne.This.That > 2 Then
Return lblnExit
End If
'
' Performing some final actions
'
End Function
''' <summary>
''' This function is called by FunctionOne Multiple Times
''' </summary>
''' <returns></returns>
Protected Overridable Function FunctionTwo(ByVal pobjOne As Object, ByVal pobjTwo As Object) As Boolean
FunctionTwo = False
'
' Performing some long complicated checking that either Returns true or exits
'
End Function
End Class
公共类示例类
'''
''此函数调用另一个函数
'''
'''
受保护的可重写函数FunctionOne()为布尔值
函数一=假
Dim lobjOne、lobjTwo、lobjThree作为对象
Dim lblnExit为布尔值=False
'
'这里有一些逻辑(操作/获取对象)
'
lblnExit=功能二(lobjOne,lobjTwo)
如果lblnExit那么
返回lblnExit
ElseIf lobjOne.This.That>2
返回lblnExit
如果结束
'
'这里有更多的逻辑(操作对象)
'
lblnExit=功能二(lobjOne,lobjTwo)
如果lblnExit那么
返回lblnExit
ElseIf lobjOne.This.That>2
返回lblnExit
如果结束
'
"做一些最后的动作",
'
端函数
'''
''FunctionOne多次调用此函数
'''
'''
受保护的可重写函数FunctionTwo(ByVal pobjOne作为对象,ByVal pobjTwo作为对象)作为布尔值
函数二=假
'
'执行一些长时间复杂的检查,要么返回true,要么退出
'
端函数
末级
您可以稍微简化条件逻辑
lblnExit = FunctionTwo(lobjOne, lobjTwo)
If lblnExit Or lobjOne.This.That > 2 Then
Return lblnExit
End If
通过将FunctionTwo
调用和结果检查封装在lambda表达式中,可以避免重复的条件逻辑:
Protected Overridable Function FunctionOne() As Boolean
FunctionOne = False
Dim lobjOne, lobjTwo, lobjThree As Object
Dim lblnExit As Boolean = False
Dim functionTwoEx =
Function()
lblnExit = FunctionTwo(lobjOne, lobjTwo)
Return lblnExit OrElse lobjOne.This.That > 2
End Function
'
' Some logic here (manipulates/gets objects)
'
If functionTwoEx() Then
Return lblnExit
End If
'
' Some more logic here (manipulates objects)
'
If functionTwoEx() Then
Return lblnExit
End If
'
' Performing some final actions
'
End Function
这是否更好取决于您的实际检查有多复杂,以及您可以使functionTwoEx
名称具有多大意义。也许这个问题属于这里?