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)存。的確如此,但是注冊(cè)一個(gè)新的變量不會(huì)吸干服務(wù)器內(nèi)存的,這一點(diǎn)請(qǐng)放心,我們不是活在 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)文章
Linux環(huán)境下搭建php開發(fā)環(huán)境的操作步驟
本篇文章是對(duì)Linux環(huán)境下搭建php開發(fā)環(huán)境的操作步驟進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06深入解析yii權(quán)限分級(jí)式訪問控制的實(shí)現(xiàn)(非RBAC法)
本篇文章是對(duì)yii權(quán)限分級(jí)式訪問控制的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06php+ajax實(shí)現(xiàn)帶進(jìn)度條的上傳圖片功能【附demo源碼下載】
這篇文章主要介紹了php+ajax實(shí)現(xiàn)帶進(jìn)度條的上傳圖片功能,涉及php文件傳輸及ajax無刷新提交的相關(guān)操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2016-09-09基于ThinkPHP+uploadify+upload+PHPExcel 無刷新導(dǎo)入數(shù)據(jù)
這篇文章主要介紹了基于ThinkPHP+uploadify+upload+PHPExcel 無刷新導(dǎo)入數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2015-09-09redis查看連接數(shù)及php模擬并發(fā)創(chuàng)建redis連接的方法
下面小編就為大家?guī)硪黄猺edis查看連接數(shù)及php模擬并發(fā)創(chuàng)建redis連接的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12phpstorm斷點(diǎn)調(diào)試方法圖文詳解
這篇文章主要介紹了phpstorm斷點(diǎn)調(diào)試方法,結(jié)合圖文形式詳細(xì)分析了phpstorm斷點(diǎn)調(diào)試的基本配置方法、使用技巧與注意事項(xiàng),需要的朋友可以參考下2023-04-04深入研究PHP中的preg_replace和代碼執(zhí)行
這篇文章主要給大家介紹了關(guān)于PHP中preg_replace和代碼執(zhí)行的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08