是否有理由选择只有一个条件的if语句?
问题描述:
我发现我的团队的项目下面的代码:是否有理由选择只有一个条件的if语句?
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
别介意函数没有返回类型(我可以轻松地添加“作为布尔”);我想知道的是,是否有任何理由更喜欢上述内容(对我来说,更可读)的代码?
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条件数大于三时使用switch语句。我没有任何背后的数据说明,除了if/else条件的数量增加之外,可读性/可维护性似乎会下降。
答
我认为你给出的具体情况的答案是否定的 - 它没有任何意义,正如其他答案中所暗示的那样,人们希望编译器能够优化掉任何实际的差异。
我把钱放在这是一个剪裁,粘贴和删除代码 - 采取一套一般化的嵌套case语句,并提取一个位,给你你需要的是/否结果。
如果这是类似的内联和/或有一个函数调用,其中设置了返回标志,那么可能有人可能会开始证明它是正确的,但不是它的样子。
哇,我问这个问题就像一年前一样。现在看起来像一个非常愚蠢的问题。那么,只是做一些超晚的答案接受...... – 2010-07-23 12:26:11