Остальное против нового IF - удобочитаемость и производительность - PullRequest
0 голосов
/ 28 августа 2018

Я работаю в C # с использованием Visual Studio и перебираю свой код, пытаясь улучшить его читабельность. Я наткнулся на этот сайт , в котором перечислены 15 лучших практик. # 7 - Избегайте глубокого вложения, он говорит об утверждениях If и говорит, что вместо использования Else сделайте еще одно утверждение If.

Это заставило меня задуматься о разнице в инструкциях между ними. Будет ли использование дополнительных операторов If стоить больше производительности, чем просто использование Else?

Любой совет будет оценен

1 Ответ

0 голосов
/ 28 августа 2018

Количество условий, оцениваемых в обоих случаях, одинаково, единственное отличие - это вложенность. Скорее всего, между ними не будет заметной разницы в производительности, и существуют разные мнения о том, какой из них «лучше» с точки зрения удобочитаемости и передового опыта.

  • В первом примере каждое условие оценивается до тех пор, пока не будет возвращено false, если только они не все true, и в этом случае будет выполняться средний (наиболее вложенный) блок if.

  • Во втором примере обратное каждого условия оценивается до тех пор, пока не будет возвращено true, если только они не все false, в этом случае последний блок if будет бежать.

Еще один способ написать свой метод тестирования, чтобы избежать вложения (в зависимости от реального языка), - это объединить условия с оператором '&&' , который будет оценивать их по порядку, пока один из них не вернет false (и, если они все верны, будет выполняться код в блоке if):

// Combine the conditions with '&&', which will evaluate
// evaluate them in order until one of them returns false
if (is_writable($folder) &&
    $fp = fopen($file_path, 'w') &&
    $stuff = get_some_stuff() &&
    fwrite($fp,$stuff))
{
    // ...
}
else
{
    return false;
}
...