0
例如:仿型代码对战潜在浪费变量
//In this case, x is always declared but may not be used
int x = 5;
if(this()){
if(x < y)
doThis();
}
else if(that()){
if (x < z)
doSomethingElse();
}
else
dontNeedX();
与
//In this case, x is never declared unnecessarily but it is duplicated
if(this()){
int x = 5;
if(x < y)
doThis();
}
else if(that()){
int x = 5;
if (x < z)
doSomethingElse();
}
else
dontNeedX();
这是从性能的角度与可读性的角度来看比较好?
编译器应该能够在第一种情况下优化x。如果它确实有所作为......。如果x是一个更复杂的对象,并且它的构造有副作用,那么情况可能并非如此。但对于整数,编译器非常聪明地分配一个值为5的变量。如果可能的话,它很可能会在检查操作码中硬编码5(x86)。充其量,这是一个微型优化,最糟糕的是,你正在浪费你的时间,认为你是编译器的“更聪明”。 – Christopher 2014-10-20 16:57:10