IF/ELSE声明订单的最佳实践

Jef*_*eff 13 .net vb.net if-statement

哪个是更好的做法?(如果有所不同,我在.Net中编码)

IF condition = true THEN
   ...true action--even if rare...
ELSE
   ...action
END IF
Run Code Online (Sandbox Code Playgroud)

要么

IF condition = [most common condition] THEN
   ...most common action....
ELSE
   ...least common action
END IF
Run Code Online (Sandbox Code Playgroud)

Mat*_*zol 32

根据Code Complete的作者Steve McConnell的说法,你应该这样做

"把你通常希望首先处理的情况放在首位.这符合将决策产生的代码尽可能接近决策的一般原则...... [ 把正常情况放在if之后 ]把重点放在阅读主要流程而不是涉及特殊情况,因此代码更易于整体阅读."

代码完成,第2版,第356-357页.

  • 那就解决了.如果'code complete'写入它,那么它必须如此.让我想起这些正统的基督徒:"它是写的......因此它必须是真理".当一本书的福音被视为唯一的真理时,很难对事情进行讨论.(这可能会让我失去一些美国程序员的支持) (6认同)
  • 我倾向于同意,但有时当您可能有嵌套的异常情况时,在正常情况完成后很难确定哪个是哪个。有时很高兴看到一个又一个的异常,如果你成功地跌到了底部,你就知道你正在处理的任何事情都是正常的。 (2认同)

Meh*_*ari 8

为特定情况使用最易读的版本,顺便说一句,不要将布尔表达式与true和false进行比较.使用conditionNot condition(!condition在C#中.)

if (condition == true) // bad
if (condition) // better 
Run Code Online (Sandbox Code Playgroud)

  • reinier:你怎么样`(((condition = True)= True)= True)`?如果不应该避免那么你可以归纳推断它可以有无限数量的`= True`表达式:) (6认同)
  • 首先,它只是使代码混乱.你写的越少,你需要阅读和理解的越少.此外,你有可能错过一个等号,它变成了'if(condition = true)`这不是你想要的.(幸运的是,C#编译器会发出警告,但为什么不从一开始就阻止它?) (5认同)
  • 我个人的做法是if(条件)进行真正的评估,if if(condition == false)进行错误的评估.如果(!条件),我觉得很容易错过,而且我个人认为它更好"如果不是条件"而不是"如果条件是假的" (4认同)