已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PHP 專業(yè)級編程規(guī)范整理專業(yè)級編程規(guī)范整理 目錄 1 1目的目的2 2 2使用角色使用角色 2 3 3適用范圍適用范圍 2 4 4文檔格式定義文檔格式定義.2 5 5命名命名2 5.1命名的統(tǒng)一原則2 5.2常量命名2 5.3變量命名2 5.4子程序命名3 5.5接口命名3 5.6類命名3 5.7網(wǎng)站默認首頁命名4 5.8文件命名4 5.9數(shù)據(jù)庫方面命名4 6注釋注釋4 6.1總原則4 6.2規(guī)范4 6.2.1類的注釋4 6.2.2接口的注釋5 6.2.3子程序的注釋5 7代碼書寫風格代碼書寫風格.6 7.1總原則6 7.2控制結構6 7.3單條語句7 7.4注釋8 7.5子程序8 7.6類9 8PHP 性能規(guī)范性能規(guī)范.9 1 1目的目的 提高開發(fā)效率;降低程序的復雜度;提高代碼可讀性。 2 2使用角色使用角色 3 3適用范圍適用范圍 所有的 PHP 程序開發(fā)人員,PHP 代碼質量檢測人員 4 4文檔格式定義文檔格式定義 實例:實例: 建議規(guī)范,建議規(guī)范,如下形式的語句為建議性的規(guī)范,不強制要求(包括字體顏色與“(建議) ”雙標識): 用空行進行段落分隔(建議) 。 5 5命名命名 5.1 命名的統(tǒng)一原則 反映現(xiàn)實世界的問題 5.2 常量命名 具名常量是根據(jù)所代表的抽象實體而不是它所代表的數(shù)字來命名 全部大寫,使用“_” 分隔單詞 例子: DEFINE(CMS_ROOT, DIRNAME(_FILE_); 5.3 變量命名 全局變量以“g_”開頭,非全局變量不要以“g_”開頭 例子: $g_staticDel $memberCount 變量名反映了現(xiàn)實世界的問題 充分描述此變量的用途 所有的“臨時”變量都重新命以更有意義的名字 例子: $discriminant = sqrt( pow( b, 2 ) - 4*a*c ); $root0 = ( -b + $discriminant ) / ( 2*a ); $root1 = ( -b - $discriminant ) / ( 2*a ); 以小寫字母開頭,從第二個單詞開始,每個單詞的第一個字母大寫,其余小寫 例子: $memberIndex 避免出現(xiàn)字母完全相同,僅大小寫不同的命名 不允許在命名的結尾使用下劃線 不要出現(xiàn)單字母的變量,如 i,j,k(只有在控制循環(huán)數(shù)時且循環(huán)代碼條數(shù)在 3 條以 內,才可以考慮使用) 循環(huán)下標的名字要有意義(如果循環(huán)的長度超出了一兩行代碼或者出現(xiàn)了嵌套循 環(huán),那么就應該是 i、j 或者 k 以外的其他名字) 例子: for ( $teamIndex = 0; $teamIndex setName( ); public function getName() return $_name; public function isVip() public function setName( $name ) $this-$_name = $name; 5.7 網(wǎng)站默認首頁命名 index.html,index.shtml,index.php(根據(jù)實際需要,盡量按順序選擇) 5.8 文件命名 文件名全部小寫 存類的文件名要與類名保持一致,文件名格式為:classname.class.php 一個文件存儲一個類 5.9 數(shù)據(jù)庫方面命名 表 :項目英文縮寫_T_表實際用途 視圖:項目英文縮寫_V_視圖實際用途 過程:項目英文縮寫_P_過程實際用途 函數(shù):項目英文縮寫_F_函數(shù)實際用途 序列:項目英文縮寫_S_序列實際用途 主鍵:項目英文縮寫_PK_表名_主鍵實際用途 索引:項目英文縮寫_I_表名_索引實際用途 6注釋 6.1 總原則 注釋應該用中文清晰表達意思。應該能夠使程序看起來更清晰,更容易理解。如 果某一段程序不值得寫文檔,那么可能它是無效的代碼 注釋要盡量簡明,避免裝飾性的、標語式的注釋 注釋不但要說明做什么,還應當說明為什么要這樣做。最好先寫注釋表明要做什 么,再進行編碼 另起一行的注釋,要寫在被注釋程序的上一行 單行注釋使用“/”,多行注釋使用“/*/” (建議) 6.2 規(guī)范 6.2.1 類的注釋 類型的用途、目的。包括其它別人可能感興趣的介紹 已知的 Bug。當然最好是修正所有的錯誤,但是有時可能暫時還沒有辦法修 正錯誤,或暫時沒有時間精力去修改 開發(fā)和維護該類的歷史列表。記錄每一次修改的作者、日期、修改的內容 對主要的算法必須加以解釋說明,主要的流程必須給出引導性的說明 標準格式 /* * description 描述類的功能、用途、現(xiàn)存 BUG,設計方法。 * author 作者姓名 * version 最后修改日期(日期格式建議采用:年-月-日格式,例如:2008- 04-05) */ 如果對已經(jīng)版本化的類進行了修改,需要按照如下格式為每一次修改附加修改 歷史記錄: * modify * 修改人 + 修改日期(日期格式建議采用:年-月-日格式,例如:2008-04- 05) * 修改說明 舉例如下: /* * description 此類實現(xiàn)操作數(shù)據(jù)庫的功能 * author 張三 * version 2008-04-05 * * modify * 李四 + 2008-05-17 * 增加事務處理方法 * * modify * 王六 + 2008-07-08 * 修改構造函數(shù),增加只聲名一次數(shù)據(jù)庫聯(lián)接的功能 */ Class Database 對類的每一個接口注釋,注釋內容不是說明實現(xiàn)細節(jié),而是說明接口的意圖 及使用方法。類似子程序的注釋風格 6.2.2 接口的注釋 接口的注釋風格基本與類的注釋風格相同 在別人使用接口之前,必須了解接口所包含的概念。檢驗一個接口是否應該 定義的簡單方法是:你是否能夠容易的描述接口的用途 接口如何應當和不應當被使用。開發(fā)者需要知道該接口如何被使用,也希望 知道該接口不能被怎樣使用 6.2.3 子程序的注釋 子程序執(zhí)行了什么功能,為什么要這樣處理 子程序對輸入、輸出數(shù)據(jù)的說明,子程序的局限性、算法來源,子程序的錯 誤處理情況,存在的 BUG,其它可行方案 標準格式: /* * description 描述此子程序的功能,存在的 BUG,算法來源,其它可 行方案 *example 使用實例(建議) * author 作者姓名 * version 最后修改時間 * param 類型 輸入?yún)?shù)名 :作用 * 列舉狀態(tài)或標識性參數(shù)的可能取值及所代表的意義 * return 類型 輸出的結果所代表的意義 */ 舉例: /* * 此子程序實現(xiàn)發(fā)送郵件的功能 * *example * $isSendSuccess = sendmail( , , * 論壇通知, 歡迎光臨論壇, 1 ) * if ($isSendSuccess) * echo 發(fā)送成功; * * else * echo 發(fā)送失敗; * * * author 劉七 * version 2008/07/12 * * param string $mailFrom : 從哪個 email 發(fā)出 * param string $mailTo : 發(fā)送到哪個 email * param string $mailTitle : email 的主題 * param string $mailContent : email 的內容 * param int $mailType : email 的類型 * 1 HTML 格式 * 0 普通文本格式 * return 類型 輸出的結果所代表的意義 */ function sendmail( $mailFrom, $mailTo, $mailTitle, $mailContent, $mailType ) 7代碼書寫風格 7.1 總原則 基本原理:好的布局凸現(xiàn)程序的邏輯結構 一行代碼盡量簡短,并且保證一行代碼只做一件事。那種看似技巧性的冗長 代碼只會增加代碼維護的難度。保證不必左右拉動滾動條來閱讀一整行代 碼,將會使你的代碼更加可讀,這一點包括注釋 使用圓括號來界定操作的順序。不要讓別人判斷復雜的操作優(yōu)先級 合理使用空行,劃分邏輯處理 代碼縮進使用 TAB 鍵(四個空格)或者四個空格 建議遵循三十秒原則。如果另一個程序員無法在三十秒之內了解你的函數(shù)做 了什么,如何做以及為什么要這樣做, 那就說明你的代碼是難于維護的,必須得到提高 7.2 控制結構 單語句代碼塊的格式要與多語句代碼塊的格式統(tǒng)一 段落之間要使用空行(建議) 對于復雜的表達式,將條件分隔放在幾行上 例子: /多語句代碼塊 for ( $i = 0; $i ; ) / 7.3 單條語句 用空格使語句顯得清楚(建議) 使用空格會讓邏輯表達式更易讀(建議) 例子: while ( $pathName $startPath + $position ; ) / 使用空格讓數(shù)組引用更容易讀(建議) 例子: $grossRate census $groupId , $gender, census $groupId , $ageGroup 使用空格讓子程序參數(shù)更容易讀(建議) 例子: getCensus( $inputFile, $empCount, $empData, $maxEmps, $inputError ) 格式化后續(xù)行 使后續(xù)行明顯 將子程序調用的后續(xù)行按標準量縮進(4 個空格或用 TAB 鍵縮進) 將控制語句的后續(xù)行縮進以標準的空格數(shù)(4 個空格或用 TAB 鍵縮進) 例子: /example 1: $totalBill = $totalBill + $customerPurchases $customerId + SalesTax( $customerPurchases $customerId ); /example 2: $totalBill = $totalBill + $customerPurchases $customerId + SalesTax( $customerPurchases $customerId ); /example 3: getCensus( $inputFile, $empCount, $empData, $maxEmps, $inputError ); /example 4: getCensus( $inputFile, $empCount , $empData, $maxEmps, $inputError ); /example 5: while ( $pathName $startPath + $position != ; & ( ( $startPath + $position ) = $pathNameMaxLength) / 每行僅寫一條語句 每行只聲明一個變量 每行只聲明一個常量 變量聲明應盡量接近其首次使用的位置 合理組織聲明順序 可以按類型分組 7.4 注釋 單行注釋使用“/”,多行注釋使用“/*/” (建議) 注釋的縮進要與相應代碼一致 每行注釋用至少一個空行分開 7.5 子程序 用空行分隔子程序的各部分 請在子程序的頭、數(shù)據(jù)和常量名聲明(如果有的話)以及子程序體之間插 入空行 將子程序參數(shù)按標準縮進 可選的子程序頭布局有:任意布局、行尾布局或標準縮進。在大多數(shù)情況 下,標準縮進更準確、連貫、可讀、易維護 7.6 類 8PHP 性能規(guī)范 使用$rowid方式取數(shù)據(jù),不要使用$rowid方式。 原因:$rowid的效率是$rowid的 7 倍。 純字符串使用單引號包含。 原因:PHP 會在雙引號包圍的字符串中搜尋變量,單引號則不會。 刪除未使用的變量 原因:僅定義一個局部變量而沒在函數(shù)中調用它,同樣會減慢速度(其程度 相當于遞增一個局部變量) 。PHP 大概會檢查看是否存在全局變量。 執(zhí)行 for 循環(huán)之前確定最大循環(huán)數(shù),不要每循環(huán)一次都計算最大值。 循環(huán)內部不要聲明變量,尤其是大變量:對象(語言通用)。 執(zhí)行字符串替換前用 s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個人車輛作為抵押物債務結算合同4篇
- 2025年度消費者權益保護普法合同履行與市場監(jiān)管協(xié)議4篇
- 二零二五版美容美發(fā)產品原料綠色采購與環(huán)保責任合同2篇
- 直播電商在2025年的市場格局
- 二零二五年度林業(yè)苗木冷鏈物流配送合同2篇
- 課題申報參考:明代徽州心學研究
- 2025年度個人消防工程勞務合同范本2篇
- 二零二五山地承包合同書:山地生態(tài)保護與可持續(xù)發(fā)展合作框架2篇
- 二零二五年度新能源儲能技術投資入股合同-@-1
- 二零二五年度大型會議活動場地租賃合同4篇
- 環(huán)境監(jiān)測對環(huán)境保護的意義
- 2023年數(shù)學競賽AMC8試卷(含答案)
- 神經(jīng)外科課件:神經(jīng)外科急重癥
- 2024年低壓電工證理論考試題庫及答案
- 2023年十天突破公務員面試
- 《瘋狂動物城》中英文對照(全本臺詞)
- 醫(yī)院住院醫(yī)師規(guī)范化培訓證明(樣本)
- 小學六年級語文閱讀理解100篇(及答案)
- 氣功修煉十奧妙
- 安徽省物業(yè)服務標準
- 勾股定理的歷史與證明課件
評論
0/150
提交評論