用下面的getFile函数中使用的ByVal和ByRef参数编写函数是不是被认为是不好的做法(VB.NET或任何语言)?
Function getFile(ByVal channel As Integer, _
ByRef Filename As String, _
ByRef Filesize As String) As Integer
...
End Function
...
Dim status As Integer
Dim filename As String
Dim filesize As Integer
For channel In 1 To 16
status = getFile(channel, filename, filesize)
...
Next channel
答案 0 :(得分:6)
我通常会尽量避免使用ByRef
,但这往往会让人感到丑陋和混乱。
您混合ByVal
和ByRef
这一事实不会影响可读性,只需拥有所有ByRef
恕我直言。
例如,如果我只需要文件名,我仍然需要传入一个filesize变量,我认为这有点丑陋。在阅读代码时,很容易错过参数可能会被更改。
正如Assaf在他的评论中所说的那样,我通常会尝试通过让方法返回某种可以包含所有返回数据的结构来解决整个问题。如果失败了,我会抛出异常而不是返回状态(假设状态是某种错误)。