為什么需要編碼規(guī)范? 為了提高工作效率,保證開發(fā)的有效性和合理性。
為了提高代碼可讀性和可重復(fù)利用性,從而節(jié)約溝通成本。
本文主要參考了 PEAR 規(guī)范,并進行適當(dāng)?shù)暮喕驼{(diào)整。
主要介紹,命名規(guī)范、注釋規(guī)范、代碼風(fēng)格。
文件標(biāo)記 所有php文件,代碼標(biāo)記均使用完整的PHP標(biāo)簽,不建議使用短標(biāo)簽。
<?php echo 'Hello world';?><? //短標(biāo)簽不推薦 echo 'Hello world';?>文件格式 文件編碼 為無 BOM 的 UTF-8。
??純PHP類文件,文件最后 ?> 要省略。
TextMate 在 “文件編碼” 中,選擇 “UTF-8(推薦)” 在 “換行符” 中,選擇 “LF(推薦)”
文件命名 程序的文件名和目錄名都采用有意義的英文命名。
不使用拼音或無意義的字母。
只允許出現(xiàn)字母、數(shù)字、下劃線、中劃線字符。
多個詞之間使用駝峰命名法。
//類統(tǒng)一采用 demoTest.class.php
//接口統(tǒng)一采用 demoTest.interface.php
//其他按照各自的方式 demoTest.{style}.php
//其他文件參照 demoTest.inc.php demo.lib.php
文件目錄結(jié)構(gòu)命名 因使用的框架不同,可根據(jù)實際情況考慮目錄結(jié)構(gòu)。
全局變量命名 $_GLOBAL[‘startTime‘]
or
$_GLOBAL[‘g_startTime_’] 兩邊都有“_”,中間使用駝峰命名。
普通變量命名 數(shù)據(jù)類型 命名規(guī)范 字符串
變量應(yīng)該以名詞為準,盡量避免使用常用關(guān)鍵字或存在模糊意義的單詞。
私有變量,建議加上前綴”_”。
函數(shù)命名 函數(shù)名即要有意義,也要盡量縮寫,一看就知道干什么。
建議單用動詞或動詞加形容詞的格式命名。
私有方法,建議在加上前綴”_”。
//例如 PRivate function _showMsg() { //方法體 } 不建議下面這樣的函數(shù)名:
public function getAdvertisementByCategoryIdAndPositionIdAndScheduleId() { //方法體 } 可修改為:
public function getAd(
全稱 縮寫 image img string str database db array arr count cnt message msg passWord passwd 或 pwd … … 以上規(guī)范可用于,PHP代碼、javaScript代碼、數(shù)據(jù)庫表字段命名等。
文件注釋 /** * 文件的簡述 * * PHP Version 6(PHP版本) * * @category 可以寫部門(英文) * @package 可以寫模塊(英文) * @author test test@company.com * @time 2017/02/02 11:48 * @copyright 2017 公司名稱 * @license 公司網(wǎng)址 license * @link test@QQ.com(作者聯(lián)系方式) */ 類注釋 /** * 類的簡述 * * @category 可以寫部門(英文) * @package 可以寫模塊(英文) * @author test test@company.com * @license 公司網(wǎng)址 license * @link test@qq.com(作者聯(lián)系方式) */ 方法注釋 /** * 方法的簡述 * @param array
對于大段注釋,使用 / / 進行注釋。
注釋不宜太多,大家能看的懂得行不必注釋。
代碼注釋應(yīng)該描述為什么,而不是做什么。
不要為了注釋而注釋。
標(biāo)注的使用 IDE 支持一些特殊注釋,可以列出整個項目中的特殊注釋,方便后期維護和代碼檢查。
例如:
//@fixMe 表示需要修復(fù)項。
//@todo 表示需要完善的地方。
代碼風(fēng)格 盡量保證程序語句一行就是一句。
盡量不要使一行的代碼過長,一般控制在80個字符之間。
如果一行代碼太長,請使用類似 “.=” 的方式斷行書寫。
類、方法的做大括號需要獨占一行。
其他控制語句等大括號和表達式同一行,并空格隔開。
class Demo{ public function index() { for ($i = 1, $i < 10, $i++) { } } public function test() { if ($expr1) { //if body } elseif ($expr2) { //elseif body } else { //else body } foreach ($data as $key => $value) { //foreach body } switch ($expr1) { case 0: echo '零'; break; case 1: echo '一'; break; default: echo 'null'; break; } //盡量同等意義的變量等號對其 $strName = $arrUserInfo['name']; $strAge = $arrUserInfo['age']; $strBirthday = $arrUserInfo['birthday']; $strHobby = $arrUserInfo['hobby']; }}調(diào)試代碼 不要在你的提交的代碼中包含調(diào)試代碼,就算是注釋掉了也不行。
像 var_dump() 、 print_r() 、 die() 和 exit() 這樣的函數(shù)。
PHP錯誤 運行代碼時不應(yīng)該出現(xiàn)任何錯誤信息,并不是把警告和提示信息關(guān)掉來滿足這一點。
例如,絕不要直接訪問一個你沒設(shè)置過的變量,你應(yīng)該先使用 isset() 函數(shù)判斷下。
最后 最后說的是,本規(guī)范不是強制,也不是標(biāo)準。
“約定大于規(guī)范”,如果有的規(guī)范太死板,不適應(yīng)您的團隊,您可以不采用,按照您自己的規(guī)范即可。
推薦PHP開發(fā)IDE:PHPStorm 。
新聞熱點
疑難解答