我正在使用Visual Studio在C#中工作,并且一直在检查我的代码以尝试提高其可读性。我碰到了Source,其中列出了15种最佳做法。 #7-避免深度嵌套,它讨论了If语句,并说不要使用Else,而要编写另一个If语句。
这让我想知道两者之间的指令差异。使用其他If语句会比使用Else花费更多的性能吗?
任何建议将不胜感激
答案 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;
}