當一個臨時變量被賦值多次時,那麼將其拆分成多個,除非它是一個循環計數器。
Motivation
臨時變量有這多種不同的用途。比如它們可被用作循環中的計數器,在循環中保存結果集,亦或保存一個冗長的表達式的計算結果等等。
這些類型的變量(容器)應該只賦值一次。如果一個同名的臨時變量被賦予多個職責,將會影響代碼的可讀性。這個時候我們應當引入一個新的臨時變量以使代碼更加清晰易懂。
可能有些注重性能的人會說,引入一個新的變量將會占用更多的內存。的確如此,但是注冊一個新的變量不會吸干服務器內存的,這一點請放心,我們不是活在 386 時代,與其在這些無聊的細枝末節上面搞所謂的優化,不如去優化真正的系統性能瓶頸,比如數據庫、網絡連接等等,而且清晰易懂的代碼更容易被重構,發現 Bug,或者解決性能問題等等。
Example Code
很多時候,我們使用同一個 $temp 變量來計算一個物體的不同屬性,這種情況比較常見,比如下面這個例子:
復制代碼 代碼如下:
function rectangle($width=1, $height=1) {
$temp = 2 * ($width + $height);
echo "Perimter: $temp <br />";
$temp = $width * $height;
echo "Area: $temp";
}
正如你所看到的,$temp 被使用了兩次分別用來計算長方形的周長以及面積。這個例子看起來非常直觀清晰,但實際的項目代碼可能遠比這個例子復雜,如果我們把代碼改成下面的樣子,這樣,不管代碼如何復雜都不會有混淆感了。
復制代碼 代碼如下:
function rectangle($width=1, $height=1) {
$perimeter = 2 * ($width + $height);
echo "Perimter: $perimeter <br />";
$area = $width * $height;
echo "Area: $area";
}
為不同的東西(如表達式)聲明一個新的臨時變量吧,大部分時候性能並不是什麼問題,而可讀性則非常重要。