这与任何问题没有什么特别的关系,只是我thinking.Does,代码中大量IF语句的存在意味着糟糕的代码设计和效率降低。
发布于 2011-10-22 21:17:16
从理论上讲,大量的'if‘语句不会显著降低代码效率。代码只是确定表达式的布尔值,并决定是否继续。然而,如果在迭代循环中有许多' If‘语句,就效率而言,这可能会导致更大的问题。
糟糕的设计是另一个问题,我不会再提了(齐明吉比我更好地介绍了这个问题)。
发布于 2011-10-22 21:29:48
如果你真的想优化代码,请注意这一点:
if (complexCalculation(someVariable) > 10)
{
}
else if (complexCalculation(someVariable) > 5)
{
}关键是,如果您正在尝试优化某些代码,请尝试将计算结果“缓存”到变量中,而不是多次重复相同的计算
int cached = complexCalculation(someVariable);
if (cached > 10)
{
}
else if (cached > 5)
{
}为什么是这个?现在..。如果complexCalculation是基于它的参数的确定性的(所以complexCalculation(N) == complexCalculation(N) always,简而言之,你用相同的参数调用它两次,你将得到两次相同的结果always)并且没有副作用(所以它不会修改任何其他东西),那么编译器可以自由地优化它。问题是,编译器经常无法验证一个函数是否是确定性的并且没有副作用,而且很少有语言(主要是函数式语言,如F#、Haskell……)。让它很容易告诉编译器(从技术上讲,在函数语言中,所有的函数都应该是确定性的,没有副作用:-) )。
发布于 2011-10-22 21:03:56
一般来说,大量的"if“语句被认为是糟糕的设计。考虑用多态替换条件语句。这是Martin Fowler在第255页的“重构:改进现有代码的设计”一书中的主题之一。如果你没有这本书,可以看看下面的文章:http://sourcemaking.com/refactoring/replace-conditional-with-polymorphism
https://stackoverflow.com/questions/7859671
复制相似问题