C# Else与新IF-可读性和性能

C# Else与新IF-可读性和性能,c#,performance,if-statement,code-readability,C#,Performance,If Statement,Code Readability,我使用Visual Studio在C#中工作,一直在检查我的代码,试图提高其可读性。我遇到了这个,列出了15个最佳实践#7-避免深度嵌套,它谈论If语句,并说,不要使用Else,而是制作另一个If语句 这让我想知道这两种产品的说明书有什么不同。使用额外的If语句会比使用Else语句花费更多的性能吗 任何建议都将不胜感激在任何情况下评估的条件数量都是相同的,唯一的区别是嵌套。从可读性和最佳实践的角度来看,两者的性能很可能没有明显的差异,对于哪一个“更好”也有不同的看法 在第一个示例中,对每个条件

我使用Visual Studio在C#中工作,一直在检查我的代码,试图提高其可读性。我遇到了这个,列出了15个最佳实践#7-避免深度嵌套,它谈论If语句,并说,不要使用Else,而是制作另一个If语句

这让我想知道这两种产品的说明书有什么不同。使用额外的If语句会比使用Else语句花费更多的性能吗


任何建议都将不胜感激

在任何情况下评估的条件数量都是相同的,唯一的区别是嵌套。从可读性和最佳实践的角度来看,两者的性能很可能没有明显的差异,对于哪一个“更好”也有不同的看法

  • 在第一个示例中,对每个条件进行求值,直到有一个返回
    false
    ,除非它们都
    true
    ,在这种情况下,中间(最嵌套的)
    if
    块将运行

  • 在第二个示例中,将计算每个条件的倒数,直到有一个返回
    true
    ,除非它们都
    false
    ,在这种情况下,最后一个
    if
    块将运行

编写测试方法以避免嵌套(取决于实际语言)的另一种方法是将条件与 ,它将按顺序计算它们,直到其中一个返回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;
}