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.