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

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

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

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

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

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

Ответы [ 3 ]

13 голосов
/ 21 марта 2011

Это обычно считается более понятным.

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

против

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

Ваша логика может быть кристально ясна для вас сегодня, но подумайте о разработчике, который встречается через пару лет.

Но, как и все остальное, это только руководство. В частности, я использую что-то вроде «негативной логики» с проверкой ошибок:

if (!myParametersAreValid)
{
    // fail out
}

DoWorkWith(myParameters)

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

1 голос
/ 15 декабря 2014

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

if (true) {

} else {

}
1 голос
/ 26 октября 2011

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

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