Это обычно считается более понятным.
if (!ICanDoThis)
{
// don't do it
}
else
{
// do it
}
против
if (ICanDoThis)
{
// do it
}
else
{
// don't do it
}
Ваша логика может быть кристально ясна для вас сегодня, но подумайте о разработчике, который встречается через пару лет.
Но, как и все остальное, это только руководство. В частности, я использую что-то вроде «негативной логики» с проверкой ошибок:
if (!myParametersAreValid)
{
// fail out
}
DoWorkWith(myParameters)
Я избегаю каскадных условных выражений, которые в противном случае требовались бы от «позитивной логики».