我在团队的项目中找到了以下代码:

Public Shared Function isRemoteDisconnectMessage(ByRef m As Message)
    isRemoteDisconnectMessage = False
    Select Case (m.Msg)
        Case WM_WTSSESSION_CHANGE
            Select Case (m.WParam.ToInt32)
                Case WTS_REMOTE_DISCONNECT
                    isRemoteDisconnectMessage = True
            End Select
    End Select
End Function

别介意该函数没有返回类型(我可以轻松添加'As Boolean');我想知道的是,有没有理由更喜欢以上(对我而言,更易读)代码?

Public Shared Function isRemoteDisconnectMessage(ByRef m As Message) As Boolean
    Return m.Msg = WM_WTSSESSION_CHANGE AndAlso _
           m.WParam.ToInt32() = WTS_REMOTE_DISCONNECT
End Function

用一般性的方式提出问题:使用 switch (或者,在这种情况下, Select Case )块和/或嵌套是否有意义块 - 测试单一条件?这可能比简单的 if

更快
有帮助吗?

解决方案

如果你担心表现......个人资料。否则你就不会在可读性方面犯错误......

其他提示

我不相信它在速度方面确实很重要,编译器应该能够优化它。

我认为这只是一个偏好问题。

我的经验法则是当if / else条件的数量大于3时使用switch语句。除了可读性/可维护性似乎随着if / else条件数量的增加而减少,我没有任何数据背后的原因。

我认为你给出的具体案例中的答案是否定的 - 它没有意义,正如其他答案中所建议的那样,人们希望编制者能够优化任何实际差异。

我会把钱放在这里进行一些剪切,粘贴和删除编码 - 使用一组通用的嵌套case语句并提取一个可以得到你需要的是/否的结果。

如果这是类似的内联和/或有一个函数调用,其中设置了返回标志,那么可能有一个人可能会开始证明它的合理性而不是原样。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top