當前位置:博客首頁>>PHP >> 閱讀正文

PHP編碼規(guī)范文檔

作者: _Approaching 分類: PHP 發(fā)布于: 2012-03-16 23:10 瀏覽:4,681 沒有評論


大半天時間整理的PHP編碼規(guī)范…

一、命名規(guī)范:

1.?常量的命名

1)?字母,全部大寫,使用“_”?分隔單詞。

如:DEFINE(“PHP_DEMO_PRINT”,”hEllo?world”);

2.?變量的命名

1)?使用駝峰結構命名,即以小寫字母開頭,從第二個單詞開始,每個單詞的第一個字母大寫。

如:$getElement=”myodbc”;

2)?全局變量以“g_”開頭,非全局變量不要以“g_”開頭

如:$g_i;

3)?所有的“臨時”變量使用完畢后必須unset。

4)?不允許出現(xiàn)字母完全相同,僅大小寫不同的命名。

5)?不允許在命名的結尾使用下劃線。

6)?不要出現(xiàn)單字母的變量,如i,j,k(只有在控制循環(huán)數(shù)時且循環(huán)代碼條數(shù)在3條以內,才可以考慮使用)

7)?變量名中不能出現(xiàn)數(shù)字。

8)?變量名最好能表示出是數(shù)值型還是字符串型變量。

如:$myCount_i表示數(shù)值型變量,$myString_s表示字符串。

9)?如果有計算限定符,把限定詞加到名字的最后。

如:$calTimeStart?、?$calTimeEnd.

 

3.?函數(shù)的命名

1)?函數(shù)名全部小寫,單詞之間可以使用下劃線。

2)?存取對象的函數(shù)名使用?set_xxx()?和get_xxx()?形式。

3)?布爾類型的函數(shù)名可以使用?isxxx()?形式。

4)?函數(shù)名中不能出現(xiàn)數(shù)字。

 

4.?類命名

1)?類名用第一個字母大寫的英文正常語序準確描述類的含義。如:Employee。

2)?類的方法命名規(guī)則與函數(shù)的命名規(guī)則一致。

3)?類的屬性名采用全字母小寫。

 

5.?文件的命名

1)?文件名字符全部采用小寫

2)?文件名稱要能反映出其內容及功能。

如:儲存有類的文件,name.class.php;存有函數(shù)的文件可采用name.func.php或name.inc.php來命名;配置文件,name.cfg.php或者config.inc.php?。

 

二、注釋規(guī)范:

1.?變量的注釋

1)?變量的同行后空一格使用雙斜線注釋。

如:$myDemo?=?‘a?demo’;?//這是行內注釋

 

2.?函數(shù)與函數(shù)體的注釋

/*

@作者:xxxx、bbb

*/

//描述函數(shù)的功能和返回值和引用方法

function??ff(aaa,?bbb)??{

……

//?普通夾雜在代碼里的單行注釋

……

return?false;

}

 

3.?文件的注釋

1)?文件功能、創(chuàng)建人信息、時間。

2)?已知的Bug。當然最好是修正所有錯誤,但可能暫時還沒有辦法修正錯誤,或暫時沒有精力去修改

3)?開發(fā)和維護文件的歷史列表。記錄每一次修改的作者、日期、修改的內容

4)?對主要的算法必須加以解釋說明,主要的流程必須給出引導性的說明

5)?標準格式

/**

*?@description?描述類的功能、用途、現(xiàn)存BUG,設計方法。

*?@author?作者姓名

*?@version?最后修改日期(日期格式建議采用:年日格式,例如:2008-04-05

*/

如果對已經(jīng)版本化的類進行了修改,需要按照如下格式為每一次修改附加修改歷史記錄:

*?@modify

*?修改人?+?修改日期(日期格式建議采用:年日格式,例如:2008-04-05

*?修改說明

 

 

三、代碼書寫風格

1.?總原則

1)?一行代碼盡量簡短,并且保證一行代碼只做一件事。

2)?使用圓括號來界定操作的順序。不要讓別人判斷復雜的操作優(yōu)先級。

3)?合理使用空行,劃分邏輯處理。

4)?代碼縮進使用TAB(設定四個空格)。

5)?建議遵循三十秒原則。如果另一個程序員無法在三十秒之內了解你的函數(shù)做了什么,如何做以及為什么要這樣做,那就說明你的代碼是難于維護的,必須得到提高。

 

2.?控制結構

 

1)?If?規(guī)范:?

1.?else?后面的if,另起一行?

2.?把對比常量,放在等式左邊?

3.?分支要加上注釋,注釋前面加一個(TAB)縮進

 

if?(6?==?$errorNum)??{ //注釋1

..

}??else??{

if?(5?==?$num)??{ //注釋2

}??else??{

}

}

 

2)?Switch規(guī)范:?

switch?(…)?{

case?1: //分支1注釋

…?  

//?這里沒有break,直接轉到下個case,須要加注釋?  

case?2:  {??//分支2注釋? 

$v?=?get_week_number(); //?創(chuàng)立變量,在{}之中?  

…? 

}?   

break;?   

default:? 

}

 

3)?For規(guī)范:?

For($i=1;$i<=3;$i++)??{

……

}

4)?While?規(guī)范:?

While?($i<=5)?{

….

}

 

5)?Foreach??規(guī)范:?

 

Foreach?($arr??as??$v?=>?$k)??{

….

}

 

四、代碼書寫風格

1.?使用$row[id]方式取數(shù)據(jù),不要使用$row[id]方式。

2.?純字符串使用單引號包含。

3.?刪除未使用的變量

4.?執(zhí)行for循環(huán)之前確定最大循環(huán)數(shù),不要每循環(huán)一次都計算最大值。

5.?循環(huán)內部不要聲明變量,尤其是大變量:對象(語言通用)

6.?執(zhí)行字符串替換前用strpos()函數(shù)判斷是否存在后再執(zhí)行替換函數(shù)。

7.?用foreach代替while遍歷數(shù)組。遍歷數(shù)組時foreach的效率明顯高于while循環(huán)

8.?str_replace函數(shù)比preg_replace函數(shù)快,但strtr函數(shù)的效率是str_replace函數(shù)的四倍

9.?當執(zhí)行變量$i的遞增或遞減時,$i++會比++$i慢一些。這種差異是PHP特有的

10.?用@屏蔽錯誤消息的做法非常低效。

? ? ? ?

本文采用知識共享署名-非商業(yè)性使用 3.0 中國大陸許可協(xié)議進行許可,轉載時請注明出處及相應鏈接。

本文永久鏈接: http://www.yjfs.org.cn/php-coding-standards-document.html

發(fā)表評論

change vcode