我为什么要在if块中使用正逻辑?

时间:2011-03-21 01:13:36

标签: microsoft-dynamics x++ dynamics-ax-2009 axapta

我不明白为什么在if块中使用正逻辑是最佳实践

http://msdn.microsoft.com/en-US/library/aa629483.aspx

首选:

if (true) 
{ 
   ... 
} 
else 
{ 
   ... 
} 

为什么在if块中使用正逻辑是最佳实践?

3 个答案:

答案 0 :(得分:13)

generally regarded更容易理解。

if (!ICanDoThis)
{
    // don't do it
}
else
{
    // do it
}

VS

if (ICanDoThis)
{
    // do it
}
else
{
    // don't do it
}    

今天你的逻辑可能非常明确,但想想从现在起几年内发生的事情的开发人员。

但与其他一切一样,这只是一个指导原则。具体来说,我使用“负逻辑”之类的东西进行错误检查:

if (!myParametersAreValid)
{
    // fail out
}

DoWorkWith(myParameters)

我避免了一系列“正逻辑”需要的条件。

答案 1 :(得分:1)

我有时做这样的半正逻辑。我认为这是技术上积极的逻辑,因为它不使用“不”运算符。我有时会发现很难总是使用正逻辑,因为它最终导致我的代码不干净:

if (ICanDoThis == false)
{
  // I can't do this
}
else
{
  // I can do this
}

答案 2 :(得分:1)

我一直看到人们首先测试最可能的结果。例如,模态对话框通常有一个默认按钮(突出显示)你看到这个,因为最常见或最常见的是这将使用。所以,如果你期望是真的,你会看到

if (true) {

} else {

}