gpt4 book ai didi

vb.net - 'TryAction()' 方法是邪恶的吗?

转载 作者:行者123 更新时间:2023-12-01 01:17:47 25 4
gpt4 key购买 nike

我正在尝试改进我的代码中的 FxCop 合规性(有史以来第一次),但我在道德问题上有点卡住了。我有一个方法 GetText()从远程服务器返回一个字符串,但在某些情况下会抛出异常。这就是为什么我也有一个方法 TryGetText(ByRef text As String)返回一个 bool 值,指示调用是否成功。如果为真,则将返回值分配给文本变量。

我认为这种结构是完全可以接受的,考虑到即使是微软也是这样做的(例如 Integer.TryParse )。
不过,FxCop 对我嗤之以鼻,口述“你不能通过引用传递!”

为了规避这个警告(有很多警告),我用一个 StringBuilder 替换了参数。但是尽管现在是合规的,但我认为它并没有以任何方式真正改进我的代码。

前:

    Public Function TryGetText(ByRef text As String) As Boolean
Dim command As New GetTextCommand(Me)
Dim result As CommandResult = ProcessCommand(command, True)
If result.CommandStatus <> Constants.Status.Failed Then
text = result.Text
Return True
Else
Return False
End If
End Function

后:
    Public Function TryGetText(builder As Text.StringBuilder) As Boolean
Dim command As New GetTextCommand(Me)
Dim result As CommandResult = ProcessCommand(command, True)
If result.CommandStatus <> Constants.Status.Failed Then
builder.Clear()
builder.Length = result.Text.Length
builder.Append(result.Text)
Return True
Else
Return False
End If
End Function

这是可以接受的 ByRef 使用,还是我应该使用 stringbuilder 替代方案?对于使用此构造的每种方法,我都不太愿意抑制此警告。我也不觉得 stringbuilder 变体改进了代码可用性。

最佳答案

这可能是 ByRef 的一个很好的用法,所以我倾向于为这种情况添加一个异常(exception)。如果您在 Visual Studio 中使用代码分析功能,您只需将以下属性添加到方法中:

<System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1045:DoNotPassTypesByReference", MessageId = "1#")> _
Public Function TryGetText(ByRef text As String) As Boolean

关于vb.net - 'TryAction()' 方法是邪恶的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11056770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com