




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、葫蘆娃小組 蜘蛛網項目編碼規(guī)范A1:開發(fā)工具與開發(fā)A1.1 開發(fā)工具采用 VIM73_46 版本A1.2 開發(fā)1)使用 AppServ2.5.10 集成環(huán)境,各版本為:5.0.51b2)3)Apache .6A1.3 A1.4 A1.5 A1.6 A1.7版本控制 SVN開發(fā)工具字符編碼 UTF-8字符縮進 一個 Tab(4 個空白字符寬度)所有成員使用 SVN 進行本地開發(fā),數(shù)據庫使用服務器數(shù)據庫本次開發(fā)使用 bro框架進行開發(fā)特別項:強制命名規(guī)范1)所有控制器和模型的類名首字母大寫(cla模版的目錄名應與控制器的文件名一致ser),之后使用駝峰命名法,同時該文件名大小寫與類
2、名完全一致,2)所有控制器和模型內的方法使用駝峰命名法,模版內模版文件名全部使用小寫A2:A2.11)文件格式開始結束標記標記使用 2) 只包含的代碼文件結束標志 ? 必須省略A2.2 注釋規(guī)范單行注釋使用 /普通多行注釋使用 /* 注釋內容 */函數(shù)以及類等功能模塊帶有參數(shù)的使用 /*注釋位置寫在被注釋內容的上一行注釋內容*/A2.3 空行和空白空行的使用時機每段較大的程序體上下加入一個空行下列情況只允許使用一個空行:-兩個函數(shù)之間。函數(shù)內的局部變量和函數(shù)的第一條語句之間。塊注釋或單行注釋之前。一個函數(shù)內的兩個邏輯代碼段之間,用以提高可讀性。2) 空格的使用時機a)空格一般應用于關鍵字與左括
3、號“(”之間,不過需要注意的是,函數(shù)名稱與左括號之間不應該用空格分開。右括號“)”除后面是“)”或者“.”以外,其他一律用空格隔開它們;b)c)一般在函數(shù)的參數(shù)列表中的逗號后面空格。數(shù)學算式的操作數(shù)與運算符之間應該添加空格(特例是二進制運算與一元運算除外,字符連接運算符號兩邊不加空格)。d)e)f)g)for 語句中的表達式應該用逗號分開,后面添加空格。強制類型轉換語句中的強制類型的右括號與表達式之間應該用逗號隔開,添加空格。除字符串中特意需要,一般情況下,在程序以及HTML 中不出現(xiàn)兩個連續(xù)的空格;說明或顯示部分中,內容如含有中文、數(shù)字、英文單詞混雜,應當在數(shù)字或者英文單詞的前后加入空格。A
4、2.4 字符串的使用使用單引號 字符串為固定值,不包含“t”等特殊轉義字符 KWPO LQSXW WSH ”WHW” QDPH ”XVHUQDPH” YDOXH ”DGPLQ” ! b) 當字符串是不包含變量的文字,應當用單引號來括起來 YDU YDOXH 文件標識:編碼規(guī)范當前版本:1.5作者:葫蘆娃小分隊完成日期:2013-11-7c) 關聯(lián)數(shù)組的下標數(shù)組中,如果下標不是整型,而是字符串類型,請務必用單引號將下標括起,正確的寫法為$arraykey,而不是$arraykey,因為不正確的寫使器認為key 是一個常量,進而先判斷出發(fā)錯誤事件,產生一條Notice 級錯常量是否存在,不存在時才
5、以“key”作為下標帶入表達式中,同時 DUUDNH;數(shù)據庫SQL 語句中,所有數(shù)據必須加單引號,無論數(shù)值還是字串,以避免可能的注入誤d)和SQL 錯誤。83$7( XVHUV 6(7 QDPH DGPLQ DJH KHLJKW ZKHUH LG 引號 字符串中的變量需要替換時:$var= “ello $world”2) 使a)b)當文字字符串包含單引號,那么字符串就引號括起來,主要針對于sql 語句$sql = “ELECT * FROM table WHERE id=$id ”;在正則表達式(用于preg_系列函數(shù)和ereg 系列函數(shù))中,建議全部使c)引號,這是為了人工分析和編寫的方便,
6、并保持正則表達式的,減少不必要的分析3) 注意:所有數(shù)據在現(xiàn)錯誤數(shù)據庫之前,均需要進行addslashes()處理,以免特殊字符轉義在數(shù)據庫的時候出A2.5 命名原則文件名函數(shù)、配置文件等其他類庫文件之外的一般是以.為后綴(第引入的不做要求)。b) 確保文件名和調用大小寫一致,是由于在類Unix系統(tǒng)上面,對大小寫是敏感的(而在調試模式下面,即使在Windows也會嚴格檢查大小寫)。c) 類名和文件名一致(包括上面說的大小寫一致),例如 UserAction類的文件命名是UserAction.class.,InfoM類的文件名是InfoM.class.d) 類文件都是以.class.為后綴(這里
7、是指的的類庫文件,不代表外部加載的類庫文件),使用駝峰法命名,并且首字母大寫,例如Db.class.。2) 目錄命名某些自動加載的目錄根據程序應以字母大寫開始,比如根目錄的Public,目錄命名也一定要有描述性的意義,在可能的情況下, 多以復數(shù)形式出現(xiàn),如./templates、./images 等。開發(fā) 如需新建目錄,應與項目組成員進行磋商,達成一致后方可實施。另外,要在所有不包含普通程序(即能夠被URL 直接調用的程序)的目錄中放置一個 1字節(jié)的index.htm 文件,內容為一個空格。幾乎除根目錄以外,所有目錄都屬于這一類型,因此開發(fā)者需要在這些目錄全部放入空index.htm 文件,以
8、避免當http 服務器的Directory 容器中Options Indexes 打開時,服務器文件被索引和列表。3) 類名一個文件中一個類,應有描述性,杜絕一切拼音、或拼音英文混雜名方式類名包括字母字符,不允許使用數(shù)字和其他字符如果類名包括多個單詞,應使用駝峰式命名方式,每個單詞的第一個字母必須大寫,不允許連續(xù)大寫。例如: AaaBbbCcc (如果類名由aaa, bbb, ccc 三個單詞組成的)a)b)c)d)Action控制器類以Action為后綴,例如 UserAction、InfoAction模型類以M為后綴,例如UserM、InfoM屬性方法名使用駝峰法,并且首字母小寫,例如 t
9、ableName名使用駝峰法,并且首字母小寫,例如 getUserName4) 函數(shù)和方法名a)b)c)d)函數(shù)名應具有描述性,杜絕一切拼音、或拼音英文混雜函數(shù)名包括字母字符,不允許使用數(shù)字和其他字符。名方式函數(shù)名使用小寫字母和下劃線的方式,例如 get_cnt_ip函數(shù)名應帶有get,set等動作性描述。 function getUser()/函數(shù)內容5) 變量名a)b)變量也應具有描述性,杜絕一切拼音、或拼音英文混雜名方式變量包含數(shù)字、字母和下劃線字符,不允許使用其他字符,變量命名最好使用項目中有據可查的英文縮寫方式,盡可以要使用一目了然容易理解的形式;變量除了在循環(huán)體(for,forea
10、ch,while)中,其他位置允許但不鼓勵使用沒有描述意義的字母作為變量名。例如:$i,$j。c)常量名常量名應具有描述性,杜絕一切拼音、或拼音英文混雜名方式b) 常量以大寫字母和下劃線命名,例如 HAS_ONE和 MANY_TO_MANY7) 其他配置參數(shù)以大寫字母和下劃線命名,例如HTML_CACHE_ON數(shù)據表和字段采用小寫加下劃線方式命名,例如 think_user 和 user_nameA2.6 語言結構if/else/else ifif 結構中,前花括號必須和條件語句在同一行,后花括號單獨在最后一行,其中內容使用縮進。b) else 和else if 與前后兩個大括號括號,以保證結
11、構清晰;,個空格。另外,即便if 后只有一行語句,仍然需要加入大c)d)e)f)首括號與,尾括號與關鍵字同列;if 中條件語句的圓括號前后必須有一個空格;括號內的條件語句中操作符必須用空格分開;不允許使用elseif 寫法,應使用else if 的寫法; if ($one = 1 ) else if ($one = 2) 在條件語句中存在多個運算符的時候,使用括號強制說明優(yōu)先級,避免開發(fā)g)因為運算符優(yōu)先級概念造成的邏輯錯誤。$one = $two = 1 | $two = 2 & $three 3; /錯誤的$one = ($two = 1) | ($two = 2 & $three 3);
12、 /正確的h) 在判斷條件中明確判斷內容的變量類型,使用正確的類型,不允許在判斷結果為true 的時候使用1,反之亦然。2)switcha)b)c)switch switch switch在條件語句的圓括號前后必須都有一個空格。中的代碼使用縮進,case 內的代碼再進行縮進結構中, break 的位置視程序邏輯,與 case 同在一行,或新起一行均可,但同一 switch體中,break的位置格式應當保持一致。switch 語句應當有 default 語句作為結束。不允許使用兩個及兩個以上的 case 條件對應一個 break 語句,如果有這樣的情況出現(xiàn),必須要注明當時的情況。switch (
13、$var) case 1: echo var is 1; break; case 2: echo var is 2; break;default: echo var is neither 1 or 2; break;switch ($str) case abc:$result = abc; break;default:$result = unknown; break;d)e)3)數(shù)組a)b)c)d)使用數(shù)組前必須一個數(shù)組 $a = array();數(shù)字索引數(shù)組索引不能為負數(shù),如果不存在定義索引,建議索引以 0 開始。數(shù)組中逗號后面間隔一個空格,提高可讀性。 array(one_value, t
14、wo_value);如果數(shù)組元素過多需要換行顯示時,在每個連續(xù)行要用縮進將開頭對齊。array(one_value, two_value, three_value);e)如果使用 key/value 的形式進行關聯(lián)數(shù)組 array( one_key=one_value, two_key=two_value, three_key=three_value);的話,鼓勵把數(shù)組分成多行,提高可讀性。4) 類的a)b)c)d)e)開始的左大括號與類的定義為同一行,中間加一個空格,不要另起一行;每個類必須有一個符合類中的代碼必須使用縮進;or 標準的文檔塊;每個文件中只有一個類,在文件名中包含類名 ,例如
15、“類名.class.”;不允許將其他代碼放到類文件里。/*/ation Block Hereclass SleClass /類的所有內容類中成員屬性和變量的類中成員屬性的必須放到類的頂部,也就是在方法上面,而且需要使用合適的權限限制外部級別;b) 任何變量在定義、進行累加、直接顯示或的變量。$number = 0; /數(shù)值型初始化$string = ; /字符串初始化$array = array(); /數(shù)組初始化前必需進行初使化,以防止構造提交的變量覆蓋程序中使用c)判斷一個無法確定(不知道是否已被賦值)的變量時,可用 empty()或 isset(),而、不要直接使用 if($switch
16、)的形式,除非你確切的知道此變量一定已經被初始化并賦值。判斷一個變量是否為數(shù)組,請使用 is_array(),這種判斷尤其適用于對數(shù)組進行遍歷的操作,例如 foreach(),因為如果不事先判斷,foreach()會對非數(shù)組類型的變量報錯;判斷一個數(shù)組元素是否存在,可使用 isset($arraykey),也可使用 empty();d)e)6)函數(shù)的定義與使用a)b)c)d)e)f)g)函數(shù)時參數(shù)的名字和變量名規(guī)范一致;函數(shù)定義中的左小括號,與函數(shù)名緊挨,中間無需空格;開始的左大括號與函數(shù)定義為同一行,中間加一個空格,不要另起一行;如果使用具有默認值的參數(shù),應該位于參數(shù)列表的后面;函數(shù)不管在調
17、用還是在的時候,參數(shù)與參數(shù)之間都要加入一個空格;必須仔細檢查并切實杜絕函數(shù)起始縮進位置與結束縮進位置不同的現(xiàn)象。建議不要使用全局函數(shù);function authcode($string, $operation, $key = ) /函數(shù)體h)在使用系統(tǒng)函數(shù)時,除非必要,否則不要使用擴展模塊中的函數(shù)。如果使用,也應當加入必要的判斷,這樣當服務器在環(huán)境不支持此函數(shù)的時候,也可以進行必要的處理。還應該在文檔和程序中的功能說明中,加上一些兼容性說明。A2.7 其它規(guī)范細節(jié)1)錯誤級別a) 在開發(fā)和調試階段,請在全局文件中使用 error_reporting(E_ALL),作為默認的錯誤級別,此級別最為
18、嚴格,能夠程序中所有的錯誤、警告和提示信息, 以幫助開發(fā)者檢查和核對代碼,避免大多數(shù)安全性問題和邏輯錯誤、拼寫錯誤。b) 在發(fā)布時,請使用 error_reporting(E_ERROR | E_WARNING | E_PARSE),作為默認的錯誤級別,以利于用戶使用并將無謂錯誤提示信息降至最低。A3設計規(guī)范A3.1 數(shù)據表的設計1)數(shù)據庫表名a)b)c)d)e)f)表名應具有描述性,杜絕一切拼音、或拼音英文混雜名方式;表名允許使用字母,數(shù)字和下劃線,不允許使用其他字符。表名使用單詞開頭,不允許使用數(shù)字和下劃線開頭;表名一律有前綴,前綴與表名之間以下劃線連接。使用前綴可以讓同一個項目在一個庫中
19、安裝多個;表詞一律小寫,單詞之間使用下劃線連接;表名長度過 64 個字符;所有數(shù)據表名稱,只要其名稱是可數(shù)名詞,則建議以復數(shù)方式命名,例如:zz_users(用戶表)、zz_articles(文章表);g)表名要回避的保留字(保留字見 附錄 B);2)數(shù)據表字段名a)b)c)d)e)f)字段名應具有描述性,杜絕一切拼音、或拼音英文混雜名方式字段名允許使用字母,數(shù)字和下劃線,不允許使用其他字符。字段名鼓勵使用與所在表的內容相關單詞開頭,允許但不鼓勵使用數(shù)字和其他字符開頭。字段名一律小寫,單詞之間使用下劃線連接。字段名長度過 64 個字符。字段類型和長度在不同數(shù)據表中必須保證一致性,不允許出現(xiàn)同一
20、字段在一個表中為整型但另外一個表中為字符型的情況出現(xiàn)。g)當幾個表間的字段有關連時,要注意表與表之間關聯(lián)字段命名的中的 uid, 都保存有 xs_users 表中的 id。,如 zz_orders 表中的 uid 與 zz_carts 表h)i)多項內容的字段,或代表數(shù)量的字段,也應當以復數(shù)方式命名,例如: views(查看次數(shù));每個表建議都要有一id 自增量的字段,可以使用全稱的形式,也可只將其命名為 id。3)字段索引名稱a)b)c)d)e)索引名稱允許使用字母,數(shù)字和下劃線,不允許使用其他字符。對任何外鍵采用非成組索引。不要索引 text/blob 類型的字段,不索引字符過多的字段。根
21、據業(yè)務需求建立組合索引。索引長度過 64 個字符。4)字段結構a)b)進行表結構設計時,應當做到恰到好處,反復推敲,從而實現(xiàn)最優(yōu)的數(shù)據體系。NULL 值的字段,數(shù)據庫在進行比較操作時,會先判斷其是否為 NULL,非 NULL 時才進行值的比對。因此基于效率的考慮,所有字段均不能為空,即全部使用 NOTNULL 的屬性修飾字段;c)d)如果不會使用非負數(shù)的字段時(如各項 id、數(shù)等),必須設置為 UNSIGNED 類型,能獲得范圍大一倍數(shù)值空間;e)任何類型的數(shù)據表,字段空間應當本著足夠用,不浪費的原則 個別字段類型在數(shù)據結構設計的時候需要注意:enum 枚舉類型由 tiny類型代替;包含任何
22、varchar、text 等變長字段的數(shù)據表,即為變長表,反之則為定長表。在設計表結構時如果能夠使用定長數(shù)據類型盡量用定長的,因為定長表的查詢、檢索、更新速度都很快。必要時可以把部分關鍵的、承擔頻的表拆分,例如定長數(shù)據一個表,非定長數(shù)據一個表。f)繁g)更小的字段類型比更大的字段類型處理要快得多。對于字符串,其處理時間與字符串長度直接相關。一般情況下,較小的表處理更快。對于定長表,應該選擇最小的類型,只要能所需范圍的值即可。例如,如果medium夠用,就不要選擇 big。對于可變長類型,也仍然能夠節(jié)省空間。一個 TEXT 類型的值用 2 字節(jié)值的長度,而一個 LONGTEXT 則用 4 字節(jié)將
23、使每個值節(jié)省 2 字節(jié)。其值的長度。如果的值長度不會超過 64KB,使用 TEXTh) 數(shù)值運算一般比字符串運算更快。例如比較運算,可在單一運算中對數(shù)進行比較。而串運算涉及幾個逐字節(jié)的比較,如果串更長的話,這種比較還要多。如果字符串列的數(shù)值數(shù)目有限,應該利用普通整型來獲得數(shù)值運算的優(yōu)越性。A3.2 索引設計原則索引,常用的有 PRIMARY KEY、INDEX、UNIQUE 幾種。通常,在單表數(shù)據值不重復的情況下,PRIMARY KEY 和 UNIQUE 索引比 INDEX 更快,要酌情使用。 索引能加快查詢速度,而索引優(yōu)化和查詢優(yōu)化是相輔相成的,既可以依據查詢對索引進行優(yōu)化,也可以依據現(xiàn)有索引對查詢進行優(yōu)化,這取決于修改查詢或索引,哪個對現(xiàn)有產品架構和效率的影響最小。根 據 產品的實際運行和被 情況,找出哪些 SQL 語句是最常被執(zhí)行的。最常被執(zhí)行和最常出現(xiàn)在程序中是完全不同的概念。 最常被執(zhí)行的 SQL 語句,又可被劃分為對大表(數(shù)據條目多的)和對小表(數(shù)據條
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 水閣楊梅山施工方案
- 廣告門頭施工方案
- 石材粘接施工方案
- 火燒板臺階施工方案
- 橋梁亮化工程施工方案
- 室外管道安裝施工方案
- TSJNX 002-2024 西安市水平衡測試報告編制規(guī)范
- 二零二五年度物流信息承運合同模板
- 二零二五年度承攬合同中增值稅稅率變動應對策略
- 二零二五年度交通事故人傷賠償公益援助協(xié)議
- 小學生漫畫獨立學習力(全3冊)
- 2022年機械設計基礎(第四版)全冊教案
- 高一年級上期班主任教育敘事
- 軟件工程導論(第六版)電子教案(第1-13章)
- 廣東2017年07月自考10424資本運營與融資試題及答案
- 精神醫(yī)學案例習題集
- GB/T 35545-2017低聚木糖
- GB/T 16956-1997船用集裝箱綁扎件
- GB/T 10184-2015電站鍋爐性能試驗規(guī)程
- 2023年出入境邊防檢查題庫
- 小兒推拿學理論知識考核試題及答案
評論
0/150
提交評論