哪一个更好?明智的表现和明智的最佳实践。为什么?
if ((process_checking == true) && (standard_output.Contains("0")))
{
}
else if ((process_checking == true) && (standard_output.Contains("1")))
{
}
OR
if (process_checking==true)
{
if (standard_output.Contains("0"))
{
blah
}
else
//there is only 0 or 1 value
{
blah
}
}
答案 0 :(得分:5)
第一个必须两次查看process_checking
的值,因此性能(非常非常可忽略地)更差。当然你对“0”和“1”的假设,第一个必须检查“1”,这是一个额外的工作。
真正的区别在于可读性。第二个更具可读性 - 很清楚你在做什么,如果process_checking
不成立,则跳过整个块。
只要你没有太深的嵌套,当它增加可读性时,肯定会有一点点嵌套。
答案 1 :(得分:2)
在我看来,第二个版本更好,因为你不重复process_checking
条件。它更具可读性,因为控制流更易于理解和理解,并且可能性能稍微高一些,因为如果第一个process_checking
子句失败,您不需要重新计算if
。但是,这只是我的意见;其他人可能有不同的看法......
答案 2 :(得分:1)
第二个实例是优越的,因为它只进行一次process_checking比较。并且因为你说只有0或1(输入已经被验证,我认为是你的process_checking标志的用途),它不会两次调用.Contains方法,因此保存了另一个函数调用和比较。
你可以用布尔变量(例如process_checking)做的另一个巧妙的事情就是让它成为该条件的唯一部分,就像你使用.Contains方法一样:
if (process_checking)
{
if (standard_output.Contains("0")) { /*stuff*/ }
else { /*other stuff*/ }
}
答案 3 :(得分:0)
在我看来,两者的结合会产生更好的结果,因为,有时您只会处理两个或三个选项,然后使用if
,else if
而更常见,通常会使用{{ 1}} if
,更好的想法是
else