Почему я должен использовать положительную логику в блоке if?

Я не понимаю, почему рекомендуется использовать положительную логику в блоке if

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

Предпочтительно:

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

Почему рекомендуется использовать положительную логику в блоке if?


person Gainster    schedule 21.03.2011    source источник


Ответы (3)


Он обычно считается более простым для понимания.

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)

Я избегаю каскада условных выражений, которые в противном случае потребовала бы «позитивная логика».

person Michael Petrotta    schedule 21.03.2011

Иногда я применяю полупозитивную логику. Я думаю, что технически это положительная логика, потому что в ней не используются операторы «не». Иногда мне трудно всегда использовать позитивную логику, потому что это делает мой код нечистым:

if (ICanDoThis == false)
{
  // I can't do this
}
else
{
  // I can do this
}
person Alex Kwitny    schedule 25.10.2011

Я всегда видел, как люди сначала проверяют наиболее вероятный результат. Например, модальные диалоги обычно имеют кнопку по умолчанию (выделено). Вы видите это, потому что это наиболее вероятно или наиболее распространено, что это будет использоваться. Так что, если вы ожидаете true, вы увидите

if (true) {

} else {

}
person an earwig    schedule 14.12.2014