PHP中應該避免使用同名變量(拆分臨時變量)
當一個臨時變量被賦值多次時,那么將其拆分成多個,除非它是一個循環(huán)計數(shù)器。
Motivation
臨時變量有這多種不同的用途。比如它們可被用作循環(huán)中的計數(shù)器,在循環(huán)中保存結果集,亦或保存一個冗長的表達式的計算結果等等。
這些類型的變量(容器)應該只賦值一次。如果一個同名的臨時變量被賦予多個職責,將會影響代碼的可讀性。這個時候我們應當引入一個新的臨時變量以使代碼更加清晰易懂。
可能有些注重性能的人會說,引入一個新的變量將會占用更多的內存。的確如此,但是注冊一個新的變量不會吸干服務器內存的,這一點請放心,我們不是活在 386 時代,與其在這些無聊的細枝末節(jié)上面搞所謂的優(yōu)化,不如去優(yōu)化真正的系統(tǒng)性能瓶頸,比如數(shù)據(jù)庫、網絡連接等等,而且清晰易懂的代碼更容易被重構,發(fā)現(xiàn) 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";
}
為不同的東西(如表達式)聲明一個新的臨時變量吧,大部分時候性能并不是什么問題,而可讀性則非常重要。
相關文章
Linux環(huán)境下搭建php開發(fā)環(huán)境的操作步驟
本篇文章是對Linux環(huán)境下搭建php開發(fā)環(huán)境的操作步驟進行了詳細的分析介紹,需要的朋友參考下2013-06-06深入解析yii權限分級式訪問控制的實現(xiàn)(非RBAC法)
本篇文章是對yii權限分級式訪問控制的實現(xiàn)方法進行了詳細的分析介紹,需要的朋友參考下2013-06-06php+ajax實現(xiàn)帶進度條的上傳圖片功能【附demo源碼下載】
這篇文章主要介紹了php+ajax實現(xiàn)帶進度條的上傳圖片功能,涉及php文件傳輸及ajax無刷新提交的相關操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2016-09-09基于ThinkPHP+uploadify+upload+PHPExcel 無刷新導入數(shù)據(jù)
這篇文章主要介紹了基于ThinkPHP+uploadify+upload+PHPExcel 無刷新導入數(shù)據(jù)的相關資料,需要的朋友可以參考下2015-09-09redis查看連接數(shù)及php模擬并發(fā)創(chuàng)建redis連接的方法
下面小編就為大家?guī)硪黄猺edis查看連接數(shù)及php模擬并發(fā)創(chuàng)建redis連接的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12深入研究PHP中的preg_replace和代碼執(zhí)行
這篇文章主要給大家介紹了關于PHP中preg_replace和代碼執(zhí)行的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-08-08