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