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

StackOverflow https://stackoverflow.com/questions/5372898

Вопрос

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

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

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

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

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

Это было полезно?

Решение

Это в целом считается Как легче понять.

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

против.

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

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

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

if (!myParametersAreValid)
{
    // fail out
}

DoWorkWith(myParameters)

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

Другие советы

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

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

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

if (true) {

} else {

}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top