-6

哪一个更好?明智的表现和明智的最佳实践。为什么?

if ((process_checking == true) && (standard_output.Contains("0")))
{
}
else if ((process_checking == true) && (standard_output.Contains("1")))
{
}

或者

if (process_checking==true)
{
   if (standard_output.Contains("0"))
   {
     blah
   }
   else
    //there is only 0 or 1 value
   {
      blah
   }
}
4

4 回答 4

5

第一个必须查看process_checking两次的值,因此性能会(非常非常可以忽略不计)更差。当然,您对“0”和“1”的假设,第一个必须检查“1”,这是一项额外的工作。

真正的区别在于可读性。第二个更具可读性 - 很清楚你在做什么,如果process_checking不是真的,整个块都会被跳过。

只要你没有嵌套太深,一点点嵌套绝对是首选,因为它可以增加可读性。

于 2013-03-27T15:28:32.013 回答
2

在我看来,第二个版本更好,因为你不重复process_checking条件。它更具可读性,因为控制流更易于识别和理解,并且性能可能会稍微提高一些,因为您不需要重新计算process_checkingif 第一个if子句失败。但是,这只是我的意见;其他人可能有不同的看法...

于 2013-03-27T15:29:24.360 回答
1

第二个实例更好,因为它只进行一次 process_checking 比较。并且由于您说只有 0 或 1(输入已经过验证,我假设这是您的 process_checking 标志的用途),因此它不会调用 .Contains 方法两次,从而节省了另一个函数调用和比较。

您可以使用布尔变量(例如 process_checking)做的另一件巧妙的事情是让它成为该条件的唯一部分,就像您使用 .Contains 方法所做的那样:

if (process_checking) 
{
    if (standard_output.Contains("0")) { /*stuff*/ }
    else { /*other stuff*/ }
}
于 2013-03-27T15:29:14.597 回答
0

在我看来,两者的结合会产生更好的结果,因为有时你只处理两个或三个选项,然后你使用ifelse if更一般地说,经常使用ifwith else,更好的主意是

if(condition = true)
{
// statements
}
else if(other condition = true)
{
// statements
}
else
{
// for all general options, which you have'nt addressed
}
于 2013-03-27T15:50:40.223 回答