Search code examples
microsoft-dynamicsx++dynamics-ax-2009axapta

Why should I use positive logic in an if block?


I don't understand why it is a best practice to use positive logic in an if block

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

Preferred:

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

Why it is a best practice to have positive logic in an if block?


Solution

  • It's generally regarded as easier to understand.

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

    vs.

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

    Your logic may be crystal-clear to you today, but think of the developer who happens across it a couple of years from now.

    But like everything else, this is only a guideline. Specifically, I use something like "negative logic" with error checking:

    if (!myParametersAreValid)
    {
        // fail out
    }
    
    DoWorkWith(myParameters)
    

    I avoid a cascade of conditionals that "positive logic" would otherwise require.