PHP中應(yīng)該避免使用同名變量(拆分臨時(shí)變量)
當(dāng)一個(gè)臨時(shí)變量被賦值多次時(shí),那么將其拆分成多個(gè),除非它是一個(gè)循環(huán)計(jì)數(shù)器。
Motivation
臨時(shí)變量有這多種不同的用途。比如它們可被用作循環(huán)中的計(jì)數(shù)器,在循環(huán)中保存結(jié)果集,亦或保存一個(gè)冗長的表達(dá)式的計(jì)算結(jié)果等等。
這些類型的變量(容器)應(yīng)該只賦值一次。如果一個(gè)同名的臨時(shí)變量被賦予多個(gè)職責(zé),將會(huì)影響代碼的可讀性。這個(gè)時(shí)候我們應(yīng)當(dāng)引入一個(gè)新的臨時(shí)變量以使代碼更加清晰易懂。
可能有些注重性能的人會(huì)說,引入一個(gè)新的變量將會(huì)占用更多的內(nèi)存。的確如此,但是注冊一個(gè)新的變量不會(huì)吸干服務(wù)器內(nèi)存的,這一點(diǎn)請放心,我們不是活在 386 時(shí)代,與其在這些無聊的細(xì)枝末節(jié)上面搞所謂的優(yōu)化,不如去優(yōu)化真正的系統(tǒng)性能瓶頸,比如數(shù)據(jù)庫、網(wǎng)絡(luò)連接等等,而且清晰易懂的代碼更容易被重構(gòu),發(fā)現(xiàn) Bug,或者解決性能問題等等。
Example Code
很多時(shí)候,我們使用同一個(gè) $temp 變量來計(jì)算一個(gè)物體的不同屬性,這種情況比較常見,比如下面這個(gè)例子:
function rectangle($width=1, $height=1) {
$temp = 2 * ($width + $height);
echo "Perimter: $temp <br />";
$temp = $width * $height;
echo "Area: $temp";
}
正如你所看到的,$temp 被使用了兩次分別用來計(jì)算長方形的周長以及面積。這個(gè)例子看起來非常直觀清晰,但實(shí)際的項(xiàng)目代碼可能遠(yuǎn)比這個(gè)例子復(fù)雜,如果我們把代碼改成下面的樣子,這樣,不管代碼如何復(fù)雜都不會(huì)有混淆感了。
function rectangle($width=1, $height=1) {
$perimeter = 2 * ($width + $height);
echo "Perimter: $perimeter <br />";
$area = $width * $height;
echo "Area: $area";
}
為不同的東西(如表達(dá)式)聲明一個(gè)新的臨時(shí)變量吧,大部分時(shí)候性能并不是什么問題,而可讀性則非常重要。
相關(guān)文章
PHP中addslashes()和stripslashes()實(shí)現(xiàn)字符串轉(zhuǎn)義和還原用法實(shí)例
這篇文章主要介紹了PHP中addslashes()和stripslashes()實(shí)現(xiàn)字符串轉(zhuǎn)義和還原用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了addslashes()和stripslashes()函數(shù)的功能,定義及具體使用技巧,并附帶說明了addslashes()與addcslashes()函數(shù)的區(qū)別,需要的朋友可以參考下2016-01-01
使用PHP和Redis實(shí)現(xiàn)消息隊(duì)列功能
這篇文章主要介紹了如何使用PHP和Redis實(shí)現(xiàn)消息隊(duì)列功能,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用PHP具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧<BR>2024-03-03
js限制checkbox勾選的個(gè)數(shù)以及php獲取多個(gè)checkbbox的方法深入解析
以下是對js限制checkbox勾選的個(gè)數(shù)以及php獲取多個(gè)checkbbox的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下2013-07-07
PHP小偷程序的設(shè)計(jì)與實(shí)現(xiàn)方法詳解
這篇文章主要介紹了PHP小偷程序的設(shè)計(jì)與實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了php基于HTML解析類實(shí)現(xiàn)小偷程序抓取圖片的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2016-10-10
PHP 函數(shù)call_user_func和call_user_func_array用法詳解
下面來和大家分享一下這個(gè)call_user_func_array和call_user_func函數(shù)的用法,另外附贈(zèng)func_get_args()函數(shù)和func_num_args()函數(shù),嘿嘿!!2014-03-03

