第四章 編碼規范_第1頁
第四章 編碼規范_第2頁
第四章 編碼規范_第3頁
第四章 編碼規范_第4頁
第四章 編碼規范_第5頁
已閱讀5頁,還剩28頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、ShopExShopEx編碼規范編碼規范編碼規范學習目標v 在完成本章的學習后,您將能夠從以下幾個方面了解編碼規范:v 編輯器設定v 代碼布局v 注釋v 命名約定v 質量保證v SQL語句 目錄大綱1.編輯器設定2.代碼布局3.注釋4.命名約定5.質量保證6.SQL語句主要內容v縮進q1個Tab制表符為4個空格。PHP文件采用4個空格的縮進,HTML文件以及HTML文件中嵌入的JavaScript代碼采用2個空格的縮進;單獨的 JavaScript以及CSS文件采用4個空格的縮進。v字符編碼q所有PHP、HTML文件均保存為UTF-8的字符編碼。1 編輯器設定 2 代碼布局 v 相對獨立的程序

2、塊之間、變量說明之后必須加空行 q 示例:如下例子不符合規范if (!$valid_ni() . / program code $repssn_ind = $ssn_dataindex-repssn_index;$repssn_ni = $ssn_dataindex-ni; q 應如下書寫:if (!valid_ni() . / program code $repssn_ind = $ssn_dataindex-repssn_index;$repssn_ni = $ssn_dataindex-ni;2 代碼布局v較長的語句要分成多行書寫 v一行程序需小于80字符q較長的語句要分成多行書寫,長表

3、達式要在低優先級操作符處劃分新行,操作符放在新行之首,劃分出的新行要進行適當的縮進,使排版整齊,語句可讀。2 代碼布局v斷行的例子q $perm_count_msg-len = NO7_TO_STAT_PERM_COUNT_LEN + STAT_SIZE_PER_FRAM * strlen( $len ); $act_task_table$frame_id * STAT_TASK_CHECK_NUMBER + $index-occupied = $stat_poiindex-occupied;v一行只寫一條語句不允許把多個短語句寫在一行中,即一行只寫一條語句。示例:如下例子不符合規范$rect

4、-length = 0; $rect-width = 0; 應如下書寫:$rect-length = 0;$rect-width = 0;2 代碼布局v始終包含大括號這是因為懶于多敲兩個字符而給代碼清晰帶來問題的又一個情形。 示例:如下例子不符合規范 if ($condition) do_stuff(); for ($i = 0; $i $size; $i+) do_stuff($i); 應如下書寫 if (condition) do_stuff(); for ($i = 0; $i $size; $i+) do_stuff(); 2 代碼布局v大括號放在哪兒 程序塊的分界符(大括號和)應各獨

5、占一行并且位于同一列,同時與引用它們的語句左對齊。在函數體的開始、類的定義、以及if、for、do、while、switch、case語句中的程序都要采用如上的縮進方式。 示例:如下例子不符合規范for (.) . / program code應如下書寫。for (.) . / program code2 代碼布局vswitch寫法示例:如下例子符合規范 switch ()case 1: .program break; case 2: .program break;2 代碼布局v符號之間使用空格采用這種松散方式編寫代碼的目的是使代碼更加清晰。由于留空格所產生的清晰性是相對的,所以,在已經非常清

6、晰的語句中沒有必要再留空格,給操作符留空格時不要連續留兩個以上空格。 示例:如下例子不符合規范if ( ($i 8) ) . 應如下書寫:if ( ($i 8) ) . 2 代碼布局v字符串連接符當使用字符串連接符時必須在句點(.)兩側加上空格。示例:如下例子不符合規范$str = ;應如下書寫:$str = ;2 代碼布局v空行的使用 誰也不愿意看到擠在一堆的無序的代碼。我們在寫代碼的時候總是會利用一些空行來增加代碼可讀性。合理的利用空格來區分代碼段會使代碼的邏輯思路更加明確。我們強行規定的空行有以下兩種情況:1、 之前必須有且只有1個空行3、兩個函數之間必須有1個空行。4、return、d

7、ie、exit之前如果有其他語句的情況下應加上一個空行。在代碼中我們不允許在行尾有多余的空格。2 代碼布局v文件頭部模板文件頭部應進行注釋,注釋必須列出:版權說明、版本號、生成日期、作者、內容等。注:以ShopEx網上商店為例,其它項目可另行規定。/* * ShopEx網上商店 文件中文名稱= * 版權所有 (C) 2003-2009 上海商派網絡科技有限公司,并保留所有權利。 * 網站地址:http:/ * - * 您只能在不用于商業目的的前提下對程序代碼進行修改和使用; * 不允許對程序代碼以任何形式任何目的的再發布。 * = */3 注釋v函數頭部注釋 每個函數之前應當有注釋,告訴一個程

8、序員使用這個函數所需要知道的事情。一個最小化的注釋應包括:每個參數的意義,期望的輸入,函數的輸出。 /* * some_func * 函數的含義說明 * * param mixed $arg1 參數一的說明 * param mixed $arg2 參數二的說明 * access public * return bool */3 注釋v注釋位置注釋應與其描述的代碼相近,對代碼的注釋應放在其上方或右方(對單條語句的注釋)相鄰位置,不可放在下面,如放于上方則需與其上面的代碼用空行隔開$person_name=jack; / active statistic task number / active

9、statistic task numberDefine(MAX_ACT_TASK_NUMBER,1000) 3 注釋v連續case注釋對于switch語句下的case語句,如果因為特殊情況需要處理完一個case后進入下一個case處理,必須在該case語句處理完、下一個case語句前加上明確的注釋。這樣比較清楚程序編寫者的意圖,有效防止無故遺漏break語句。示例:switch ($i) case CMD_INIT: echo i equals 0; break; case CMD_START: echo i equals 1;/ now jump into case CMD_A case C

10、MB_A: echo i equals 2; break;3 注釋v結構體聲明代碼中代表結構體的數組變量,要提前聲明。示例:function example_fun() $student = array(name = 小明, /名稱addr = 詳細地址, /地址sex = 男, /性別city = 上海 /城市 )3 注釋v注釋以中文為主 注釋應考慮程序易讀及外觀排版的因素,使用的語言若是中、英兼有的,建議多使用中文,除非能用非常流利準確的英文表達。3 注釋v禁止拼音命名法q代碼中禁止用拼音命名法。v變量命名q 變量名應當全部小寫,并且詞語之間以單個下劃線分隔。q 名稱應當是描述性的,并且簡

11、明例如: $current_user 是正確的, 但是 $currentuser 和 $currentUser 就不正確。4 命名約定v函數命名 使用單詞間用單下劃線分隔的小寫名稱,允許動賓詞組為執行某操作的函數命名。示例: function input_record() function get_current_color() function is_boy()動詞表:add / edit / remove begin / end create / destroy get / setincrement / decrement put / get lock / unlock open / cl

12、osestart / stop show / hide send / receive cut / paste 系詞表:is has4 命名約定v三元運算符 q三元運算符只應該用來做簡單的事情。它們只適合拿來做賦值用 示例:不應該使用它們的地方 ($i $size) ? do_stuff($foo) : do_stuff($bar); 示例:使用它們的合適地方 $min = ($i $j) ? $i : $j;5 質量保證v變量初始化 這個問題最容易在檢查 HTML 表單傳遞了什么變量時出現。這些錯誤可以通過使用內嵌的 isset() 或者empty()函數檢查一個變量是否被設置來避免。 示例:

13、 老辦法if ($forum) . 新辦法:if (!empty($forum) .if (isset($forum)) 5 質量保證v 引用字符串 在 PHP 中有兩種不同的方式引用字符串使用單引號或使用雙引號。主要區別是:解析器在雙引號括起的字符串中執行變量替換,卻不在單引號括起的字符串中執行示例:如下例子不符合規范$str = This is a really long string with no variables for the parser to find.; do_stuff($str); 應如下書寫:$str = This is a really long string wi

14、th no variables for the parser to find.; do_stuff($str);5 質量保證v 關聯數組的鍵名q在 PHP 中,使用一個不用引號括起來的字符串作為一個關聯數組的鍵名是可以運行的。注意,這只是當我們使用字符串時的情況,不是當我們使用變量時的情況。示例:如下例子不符合規范 $foo = $assoc_arrayblah; 應如下書寫:$foo = $assoc_arrayblah;5 質量保證v 輸入變量的初始化q無論是函數的參數還是通過URL傳遞的變量,在調用之前均必須對其進行預處理以及設定默認值。 q字符串必須進行trim及轉義的處理,并且如果變

15、量的值是在我們預計的范圍之內,需要對變量的非法值做出相應的處理;對于數字型的變量則需要進行intval或者floatval的處理。5 質量保證v require和includeq在程序中需要使用包含文件的時候我們要求使用require_once或者include_once,不允許使用require或者include。q對于程序必須包含的文件只能采用require_once,而對于某些有條件包含的文件在引用時只能使用include_once。5 質量保證v 文件命名q 文件名應當全部小寫,并且詞語之間以單個下劃線分隔。 q 名稱應當是描述性的,并且簡明例如: current_user.php 是

16、正確的, 但currentuser.php 和 currentUser.php 就不正確。5 質量保證vSQL select 語句q 在已知需要查詢的字段的前提下,不允許使用如下的代碼:SELECT * FROM mytable 取而代之的寫法是將每一個字段名寫上去,請不要偷懶。 SELECT col1, col2, col3 FROM mytableq 在需要獲得已知記錄數量情況下,請使用 LIMIT offset, count 的方式,盡量不要使用無 LIMIT 的 SELECT 語句。q 在需要或者滿足條件的記錄數量的情況下,請使用 SELECT count(*|col1) FROM 的方式,盡量不要使用 SELECT col1 FROM 的方式。6 SQL 語句 vSQL insert 語句q SQL INSERT 語句可以寫成兩種不同方式?;蛘吣忝鞔_指明要插入的列,或者你已經知道數據中各列的順序,不用詳細指定它們。我們希望使用前一種方法,也就是詳細說明插入哪些列。這意味著應用程序代碼不會依賴于數據庫中字段的順序,也不會因為我們增加另外的字段而崩潰。# 這不是我們想要的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論