我需要做一些重构(实际上它很多,但这个小步骤对整个过程非常有帮助)。所以,假设我有这段代码:
If xmlDoc.SelectSingleNode("/dang") IsNot Nothing Then
universalNode = xmlDoc.SelectSingleNode("/dang")
Type = "dang"
ElseIf xmlDoc.SelectSingleNode("/nang") IsNot Nothing Then
universalNode = xmlDoc.SelectSingleNode("/nang")
Type = "nang"
ElseIf xmlDoc.SelectSingleNode("/lang") IsNot Nothing Then
universalNode = xmlDoc.SelectSingleNode("/lang")
Type = "lang"
ElseIf xmlDoc.SelectSingleNode("/tang") IsNot Nothing Then
universalNode = xmlDoc.SelectSingleNode("/tang")
Type = "tang"
ElseIf xmlDoc.SelectSingleNode("/xtang") IsNot Nothing Then
universalNode = xmlDoc.SelectSingleNode("/xtang")
Type = "xtang"
End If
它是一个大功能的主体,我想把它带到一个单独的功能。所以,我想知道的是,通过值传递universalNode
和Type
并将它们分配给它们是否更好,而不需要返回任何内容?这样做会好还是有风险?
如果它只是我正在处理的Type
,那么我只会返回它,但它不止一个变量被改变,并且它们都是大函数的局部变量,从中我拿出这段代码片段。
还有其他建议吗?
答案 0 :(得分:1)
你可以通过引用(而不是值)将变量传递给函数,这不是一个坏习惯,应该可以工作:
Public Sub MyFunc(ByRef node As MyNode, ByRef typ As String)
node = ...
typ = ...
End Sub
或者您可以返回一些复杂的数据持有者:
Public Class MyParams
Public node As MyNode
Public typ As String
End Class
Public MyParams MyFunc()
Dim result As New MyParams()
result.node = ...
result.typ = ...
Return result
End Sub