我在团队的项目中找到了以下代码:
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
快吗?
答案 0 :(得分:4)
如果你担心表现......个人资料。否则你就不会在可读性方面犯错误......
答案 1 :(得分:2)
我不相信它在速度方面确实很重要,编译器应该能够优化它。
我认为这只是一个偏好问题。
答案 2 :(得分:1)
我的经验法则是当if / else条件的数量大于3时使用switch语句。除了可读性/可维护性似乎随着if / else条件数量的增加而减少,我没有任何数据背后的原因。
答案 3 :(得分:1)
我认为你给出的具体案例中的答案是否定的 - 它没有意义,正如其他答案中所建议的那样,人们希望编制者能够优化任何实际差异。
我会把钱放在这里进行一些剪切,粘贴和删除编码 - 采用一组通用的嵌套case语句并提取一个可以得到你需要的是/否的结果。
如果这是类似的内联和/或有一个函数调用,其中设置了返回标志,那么可能有一个人可能会开始证明它的合理性,但不是原样。