是否有理由更喜欢仅使用一个条件切换if语句?

时间:2009-10-28 16:05:03

标签: switch-statement if-statement sql

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

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快吗?

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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

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