其他与新IF-可读性和性能

时间:2018-08-28 20:00:05

标签: c# performance if-statement code-readability

我正在使用Visual Studio在C#中工作,并且一直在检查我的代码以尝试提高其可读性。我碰到了Source,其中列出了15种最佳做法。 #7-避免深度嵌套,它讨论了If语句,并说不要使用Else,而要编写另一个If语句。

这让我想知道两者之间的指令差异。使用其他If语句会比使用Else花费更多的性能吗?

任何建议将不胜感激

1 个答案:

答案 0 :(得分:0)

两种情况下评估的条件数相同,唯一的区别是嵌套。两者之间的性能极有可能没有显着差异,并且从可读性和最佳实践的角度来看,关于哪一种“更好”存在不同的看法。

  • 在第一个示例中,将评估每个条件,直到一个条件返回false,除非它们全部为true,在这种情况下,中间(嵌套最多的)if块将运行。

  • 在第二个示例中,对每个条件的 inverse 进行求值,直到一个返回true,除非它们全部为false,在这种情况下为最后一个if块将运行。

编写测试方法以避免嵌套(取决于实际语言)的另一种方法是将条件与'&&' operator组合在一起 ,它将按顺序评估它们,直到其中之一返回false(如果全部为true,则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;
}