vb.net – ‘TryAction()’方法是邪恶的吗?
发布时间:2020-12-17 07:14:56 所属栏目:百科 来源:网络整理
导读:我正试图在我的代码中改进FxCop合规性(这是有史以来第一次),但我有点陷入道德问题.我有一个方法GetText()从远程服务器返回一个字符串,但在某些情况下可以抛出异常.这就是为什么我还有一个方法TryGetText(ByRef text As String),它返回一个布尔值,表示调用是
我正试图在我的代码中改进FxCop合规性(这是有史以来第一次),但我有点陷入道德问题.我有一个方法GetText()从远程服务器返回一个字符串,但在某些情况下可以抛出异常.这就是为什么我还有一个方法TryGetText(ByRef text As String),它返回一个布尔值,表示调用是否成功.如果为true,则将返回值分配给text变量.
我认为这种结构是完全可以接受的,考虑到即使微软也这样做(例如Integer.TryParse). 为了绕过这个警告(并且有很多这样的警告),我用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变体改进了代码可用性. 解决方法
嗯,我想每个人都讨厌太多的太空.两个已经太多了.虽然在你的情况下有很多方法,他们都遵循相同的模式听起来不是一个真正的问题.
您可以选择不遵守Microsoft的Try *方法模式. 而不是布尔值,为什么不成功返回字符串,如果失败则返回Nothing / Empty? 事实上,这是更多的代码,但它确实解决了警告(如果这真的是你所追求的). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |