項目-編碼規(guī)范_第1頁
項目-編碼規(guī)范_第2頁
項目-編碼規(guī)范_第3頁
項目-編碼規(guī)范_第4頁
項目-編碼規(guī)范_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

項目全稱編碼規(guī)范承建方全稱2013年4月

目錄TOC\o"1-3"\f項目全稱 1編碼規(guī)范 11命名規(guī)范 11.1常量命名 11.2變量命名 11.2.1域/類變量 11.2.2局部變量 21.2.3靜態(tài)變量 21.3方法參數(shù)命名 21.4方法命名 31.5類命名 41.6包命名 51.7配置Bean命名 61.8文件命名 61.9數(shù)據(jù)表命名 71.10數(shù)據(jù)項命名 71.11外鍵命名 91.12索引命名 92注釋規(guī)范 93編碼規(guī)范 103.1開發(fā)環(huán)境 103.2編碼風(fēng)格 113.3接口規(guī)范 113.4目錄規(guī)范 123.4.1源文件目錄 123.4.2Web資源文件目錄 143.5UI前臺編寫規(guī)范 153.6JAVA編寫規(guī)范 183.7JAVA集合類規(guī)范 193.8Ajax應(yīng)用規(guī)范 193.9JSP編寫規(guī)范 193.10JS編寫規(guī)范 203.10.1文件名命名規(guī)范 203.10.2命名空間(NameSpace)格式 213.10.3命名規(guī)范 223.10.4書寫規(guī)范 233.10.5對象創(chuàng)建說明 233.10.6全局變量 243.11SQL編寫規(guī)范 253.12編碼最佳實踐 264異常規(guī)范 265日志規(guī)范 265.1系統(tǒng)日志 265.2業(yè)務(wù)日志 276Maven依賴構(gòu)建規(guī)范 286.1Maven依賴 287流程規(guī)范 287.1流程說明 287.2相關(guān)工具 287.3文檔規(guī)范 298版本管理規(guī)范 298.1文檔規(guī)范 298.2代碼規(guī)范 30命名規(guī)范總原則:名稱中不能以‘_’、‘$’等特殊字符開頭和結(jié)尾;命名盡可能遵循術(shù)語表,盡可能符合標(biāo)準(zhǔn)的英文單詞或縮寫,縮寫在術(shù)語表中需有說明;命名盡可能做到見名知意,含義清晰準(zhǔn)確,同時注意避免產(chǎn)生二義性;

常量命名常量統(tǒng)一大寫;程序中的固定數(shù)字、字符串等,必須用常量來表示,并能正確表達其含義;常量盡可能寫在相應(yīng)的常量類中;【例子】STATUS_OF_START,STATUS_OF_END開始狀態(tài),結(jié)束狀態(tài)PATTERN_OF_URL_FILTER

變量命名自定義類型變量命名盡可能盡量保持和類名相同,只是首字母小寫;UserRoleuserRole;當(dāng)針對接口命名變量時,去掉變量前綴I,其他規(guī)則不變;IUserServiceuserService;除了循環(huán)內(nèi)部,竟可能避免使用單個字符做變量;For(inti=0;i<length;i++){…};域/類變量以小寫字母開頭,單詞之間以大寫母分割;標(biāo)識復(fù)數(shù)時盡可能以's'結(jié)尾,當(dāng)'s'無法表述時則以相應(yīng)的集合類型做結(jié)尾;如果出現(xiàn)同類型的多變量聲明,則應(yīng)加業(yè)務(wù)單詞前綴限定,避免直接在變量后加數(shù)字的方式區(qū)分;【例子】ListusersMappersonMap

GradeExamgradeExam,GradeExamrefGradeExam局部變量以小寫字母開頭,單詞之間以大寫母分割;標(biāo)識集合時應(yīng)以相應(yīng)的類型做些結(jié)尾,或者特殊類型的變量,通常使用其類型作為后綴,過長的特殊類型允許使用縮寫;【例子】User[]userArray

ListuserListMapuserMap;對于相同類型的多變量聲明,加業(yè)務(wù)含義前綴限定Useruser;UsercheckedUser;靜態(tài)變量靜態(tài)變量統(tǒng)一大寫;如果是一組靜態(tài)變量,名稱的開頭應(yīng)有類型限定詞,詞之間用下劃線分割;【例子】ACTION_OF_ADD,ACTION_OF_UPDATE方法參數(shù)命名以小寫字母開頭,單詞之間以大寫母分割

其他規(guī)則同局部變量避免出現(xiàn)使用arg0,arg1...argN類似的參數(shù)列表,參數(shù)命名需明確方法命名方法命名采用動賓結(jié)構(gòu)+修飾詞,其中動賓結(jié)構(gòu)需要體現(xiàn)該方法的主要功能;【例子】getProduct(Stringid)單個產(chǎn)品getProducts(Stringid,…)按照參數(shù)列表取多個產(chǎn)品,優(yōu)先級高getProductList(Stringid,…)同上,如果’s’表述不了,采用此方式getProductArray(Stringid,…)按照參數(shù)列表取得產(chǎn)品數(shù)組getProductMap(Stringid,…)按照參數(shù)列表取得產(chǎn)品MAPgetProductWithName(Stringname)根據(jù)名稱取得產(chǎn)品getProductAll()非getAllProduct()取得所有產(chǎn)品getProductPage(…)普通的產(chǎn)品分頁獲取方法getProductPageWith**(…)特殊的產(chǎn)品分頁獲取方法動詞說明:對于Service層或DAO層的方法名稱,使用get**已經(jīng)能夠涵蓋所有的業(yè)務(wù)方法,所以自定義方法中盡可能避免使用find**或其他的動詞方式;屬性方法需遵需get/set原則;【例子】Stringname;//屬性getName(){…}setName(Stringname){…}對于表現(xiàn)層的主業(yè)務(wù)實體明確的Action層的常用業(yè)務(wù)方法定義;ProductActionlist()管理實體列表input()編輯實體(新增、修改)save()保存實體delete()刪除實體enable()啟用實體disable()禁用實體ajaxMethod()處理ajax交互的方法Action中result說明:統(tǒng)一采用小寫方式對于主業(yè)務(wù)方法,默認值為success,input,reload,list,error如果上述不能滿足則在基本值后加業(yè)務(wù)限定詞【例如】listiteminputsubjectreloadsubject如果Action中除了出業(yè)務(wù)實體外還存在其他業(yè)務(wù)實體的業(yè)務(wù)方法,則在基本方法后面加上相關(guān)名稱;【例子】listProductItemService層和DAO層的常用業(yè)務(wù)方法定義;【例子】save**saveEntity

保存實體delete**deleteEntitydeleteEntitys刪除實體get**getEntitygetEntityWith**取得實體getEntityPage取得實體分體類命名以大寫字母開頭,由多個單詞組成的類名,各單詞以大寫字母分割;Action層的類命名必須以**Action結(jié)尾

UserAction

Service層的類命名必須以**Service結(jié)尾UserServiceDao層的類命名必須以**DAO結(jié)尾

UserDAOvo層的類命名必須以**VO結(jié)尾

UserVOmodel層的類命名

Userutil層的類命名盡量以**Util結(jié)尾,根據(jù)需要可允許**Helper,**Holder形式的類名存在

StringUtilModelHelperSpringContextHolder特殊說明對于model層實體命名;model包中實體bean與數(shù)據(jù)庫中的表名盡可能保持一致,如果數(shù)據(jù)庫表名包含下劃線,則在bean名中要予以摘除;如果上述不能滿足則按照術(shù)語表命名進行即可,必須保證實體名稱在整個系統(tǒng)中的唯一性;接口命名以'I'開頭

IUserService,實現(xiàn)類名以'Impl'結(jié)尾UserServiceImpl;

補充說明:對于基礎(chǔ)業(yè)務(wù)服務(wù)平臺的對上數(shù)據(jù)服務(wù)及子系統(tǒng)中的對外接口需要遵循接口和實現(xiàn)類方式;包命名包的劃分需要依據(jù)并且符合產(chǎn)品的業(yè)務(wù)架構(gòu)劃分,來源于產(chǎn)品線定義;包的命名全部使用小寫的ASCII字母,采用有意義的英文單詞或術(shù)語表中的縮寫,盡可能避免使用下劃線或數(shù)字等其它字符;頂級包名“com.unitever”,例如:com.unitever.framework(產(chǎn)品的框架包)com.unitever.base(產(chǎn)品的基礎(chǔ)平臺包)com.unitever.子產(chǎn)品(子產(chǎn)品頂級包的命名)“子包”命名要遵循以下命名規(guī)則:common 公共文件存儲包common.util 工具包common.helper輔助包component 組件包core 核心包annotation 注解包constant 常量包external 對外提供接口包external.impl實現(xiàn)類包名service 業(yè)務(wù)服務(wù)包dao 數(shù)據(jù)庫訪問包web 管理web應(yīng)用相關(guān)的包web.action 頁面轉(zhuǎn)發(fā)包model 領(lǐng)域模型相關(guān)的bean包model.hbm 管理與model對應(yīng)的hibernate映射文件包vo 業(yè)務(wù)層之間的數(shù)據(jù)傳遞對象包i18n 國際化的資源文件包配置Bean命名考慮到V3的產(chǎn)品是模塊化開發(fā),在定義公共對象時,可能會存在重復(fù)定義的情況,例如,好幾個模塊都定義某第三方的代理工廠類時,這時為了避免命名沖突要求需要加上模塊編碼限定;<bean_id="jaxWsProxyFactoryBean"class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"/>轉(zhuǎn)為<bean_id="baseJaxWsProxyFactoryBean"class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">Spring中配置文件的bean的id命名,盡可能按照類型名首字符小寫方式;文件命名對于struts配置文件中CRUD業(yè)務(wù)的result文件命名:列表方法對應(yīng){entity}.jsp新增和修改方法對應(yīng)于{entity}-input.jsp盡可能避免出現(xiàn)數(shù)字配置文件的命名:spring:除了ApplicationContext.xml外,功能組件配置按照ApplitionContext-[function[-function]].xml命名;applicationContext-cxf-client.xmlapplicationContext-cxf-server.xml業(yè)務(wù)模塊的按照applicationContext-module[-function].xml命名application-ex-schedule.xmlstruts配置文件:除了主struts.xml外,各模塊的配置統(tǒng)一用注解方式;如果注解方式不能滿足,按照配置文件方式配置struts2-ex.xml國際化資源文件按照如下格式編寫:【例子】{module}-perties{module}-perties全局資源文件為:global_pertiesglobal_perties

數(shù)據(jù)表命名表命名參照術(shù)語表,名稱要求精煉地體現(xiàn)業(yè)務(wù)含義,盡可能避免出現(xiàn)2個以上的單詞,單詞長度盡可能短,表現(xiàn)同一業(yè)務(wù)含義的多個單詞之間不必以_分割;XX_USERACCOUNT表名采用單數(shù)形式,統(tǒng)一大寫;子系統(tǒng)的命名參照術(shù)語表;長度最大為30,禁止使用雙引號【數(shù)據(jù)表名命名規(guī)則】單業(yè)務(wù)表命名:子系統(tǒng)簡寫_表名中間表命名:子系統(tǒng)_表1_表2{system}_{table1}_{table2}數(shù)據(jù)表的Owner應(yīng)該是具體的設(shè)計人(vss帳號),不應(yīng)該是dbo或none

數(shù)據(jù)項命名數(shù)據(jù)項命名中除了外鍵字段盡可能避免出現(xiàn)下劃線,命名需參照術(shù)語表,統(tǒng)一小寫,盡可能避免出現(xiàn)兩個以上的單詞,不需要包含表的名稱信息;【例如】student的名稱name√studentName×盡可能避免系統(tǒng)保留字;單個業(yè)務(wù)實體表的主鍵必須為id;引用列命名采用id_引用表,如果是父子關(guān)系則為id_parent,按照重要程度順序排列表其他字段前面;基本業(yè)務(wù)實體表必須具備修改人,修改時間,創(chuàng)建人,創(chuàng)建時間,刪除標(biāo)志字段;如果數(shù)據(jù)項是一個標(biāo)志位,則盡可能提供缺省值;主鍵采用32為UUID;長度最大為30,禁止使用雙引號

【允許使用的數(shù)據(jù)類型】類型范圍Sqlserver數(shù)據(jù)類型Oracle數(shù)據(jù)類型MySql數(shù)據(jù)類型字符型長度固定charcharchar可變字符型長度不固定varcharvarchar2varchar32位整型-2,147,483,648~2,147,483,647intintegerint日期型yyyy-mm-ddchar(10)char(10)char(10)日期時間型(精確到秒)yyyy-mm-ddhh_mm_sschar(19)char(19)char(19)日期時間型(精確到毫秒)yyyy-mm-ddhh_mm_ss_SSSchar(23)char(23)char(23)布爾型0(表示false)

1(表示true)char(1)char(1)char(1)大文本textclobtext【表模板參考】用于數(shù)據(jù)庫文檔編寫數(shù)據(jù)項名稱類型(精度)說明idchar(32)id_表名稱char(32)關(guān)鍵字段ft(添加時間)char(19)0為有效,1為刪除lt(最后修改時間)char(19)fu(添加的用戶)char(32)lu(最后修改的用戶)char(32)外鍵命名外鍵名統(tǒng)一大寫,格式為FK_外鍵表_指向表;為了避免PDM中引用線太多,制訂了如下規(guī)則進行控制,這些規(guī)則僅應(yīng)用于外鍵的編碼(CODE)上:【例子】表A(TA)指向表(TB)外鍵NAME外鍵CODE模塊內(nèi)重要模塊內(nèi)非重要模塊外重要模塊外非重要FK_TA_TBFK_TA_TB_11FK_TA_TB_12FK_TA_TB_21FK_TA_TB_22數(shù)據(jù)表中的外鍵約束必須建立,以保證數(shù)據(jù)的完整性;長度最大為30,禁止使用雙引號索引命名索引名統(tǒng)一大寫普通索引格式為IND_{system}_{表名}_{字段名}【例子】IND_EX_SSCORE_COURSE是為ra_sscore的id_course創(chuàng)建索引唯一索引格式為UNI_{system}_{表名}_{字段名}長度最大為30,禁止使用雙引號注釋規(guī)范Java注釋按作用分為兩種:實現(xiàn)注釋:對代碼作用的解釋,其表現(xiàn)形式又分為行注釋和段注釋。行注釋:對一行代碼的解釋說明,以“//”開頭,結(jié)束屬性的放在行結(jié)尾,其他獨占一行;publicStringname;//行注釋內(nèi)容

段注釋:當(dāng)需要描述的信息一行不能表述清楚時用段注釋,一般放在所描述信息的前面,形式如下:/*

*段注釋內(nèi)容*/文檔注釋:對類公共方法、變量等信息的描述,以方便其他編程或維護人員對該類的了解及應(yīng)用,通常以javadoc文檔的形式提供給外界【例子】/***main方法*@paramargs參數(shù)*/publicstaticvoidmain(String[]args){}注釋應(yīng)用規(guī)范:接口中的方法和變量,參數(shù)需要寫注釋加以說明Service層業(yè)務(wù)方法需要寫注釋描述方法的職能工具類中的公共方法需要寫注釋描述其功能復(fù)雜邏輯計算過程的關(guān)鍵代碼片段處需要有注釋說明同一段代碼片段被多人維護,每次修改需要寫注釋說明變量命名時詞不達意或會造成困惑的需要寫注釋加以說明編碼規(guī)范開發(fā)環(huán)境開發(fā)平臺WindowsXPJDK版本Jdk1.6TOMCAT版本Tomcat6.0.18開發(fā)IDE工具MyEclipseEnterpriseWorkbench9.0M1設(shè)計工具PowerDesigner9.5,RationalRose2003,MindjetManager9axureRP源碼管理SVN文檔管理MicrosoftVisualSourceSafe2005,ms-office2007數(shù)據(jù)庫MicrosoftSQLServer2008r2系統(tǒng)文件編碼UTF-8

編碼風(fēng)格代碼風(fēng)格主要包括縮進、空格、對齊、行距、詞間距,注釋等,總原則為:縮進應(yīng)為4個空格,不要在源文件中保留Tab字符。變量應(yīng)集中定義,定義的順序為常量/靜態(tài)/類變量,方法之間不應(yīng)存在變量定義。“{”應(yīng)跟在類名、方法名、判斷條件的后面,“}”應(yīng)獨占一行。

類體/方法體/代碼塊應(yīng)該保持層次結(jié)構(gòu),關(guān)系密切的行對齊且不應(yīng)存在無意義的空行等。為了可維護性,類的大小應(yīng)控制在2000行以內(nèi),超過部分要進行適當(dāng)拆分,方法盡可能控制在100行以內(nèi)代碼風(fēng)格統(tǒng)一進行管理,在初次導(dǎo)入工程時,需要為工程指定格式化模板文件,編寫代碼時,eclipse會自動按照上述要求來格式化代碼片段。格式化模板文件為cleanup-pro和formatter-pro接口規(guī)范接口統(tǒng)一評審子系統(tǒng)間的業(yè)務(wù)調(diào)用需要遵循接口-實現(xiàn)模式進行除相互依賴的子產(chǎn)品,其他的接口調(diào)用都從基礎(chǔ)平臺獲取Web服務(wù)的業(yè)務(wù)調(diào)用需要遵循接口-實現(xiàn)模式進行接口定義需要參考業(yè)務(wù)架構(gòu),職能定義必須清晰,同一業(yè)務(wù)職能的接口不應(yīng)在一個以上地方分散出現(xiàn)接口中的方法和參數(shù)需要有詳細使用說明子系統(tǒng)外部接口、基礎(chǔ)業(yè)務(wù)平臺對外接口、業(yè)務(wù)組件和控間的接口必須有專門的文檔說明目錄規(guī)范結(jié)合V3產(chǎn)品線的業(yè)務(wù)架構(gòu),本著基礎(chǔ)服務(wù)層和應(yīng)用層分離的原則,將基本的公共的服務(wù)提取到基礎(chǔ)服務(wù)平臺,具體的業(yè)務(wù)歸納到相應(yīng)的子產(chǎn)品線,實現(xiàn)基礎(chǔ)服務(wù)平臺與子產(chǎn)品系統(tǒng)及子產(chǎn)品系統(tǒng)之間進行分離,以滿足按需裝配的需求,下面就具體相關(guān)目錄結(jié)構(gòu)進行說明源文件目錄Java:Java:存放java代碼Resources:存放資源文件Java:Java:存放java測試代碼Resources:存放測試資源文件產(chǎn)品項目分類包含開發(fā)框架、業(yè)務(wù)平臺、子產(chǎn)品:公共的工具類開發(fā)框架:提供核心API、工具、基礎(chǔ)組件及服務(wù)的支撐。公共的工具類低層服務(wù)支撐基礎(chǔ)核心包基礎(chǔ)組件低層服務(wù)支撐基礎(chǔ)核心包基礎(chǔ)組件

業(yè)務(wù)平臺:提供與業(yè)務(wù)相關(guān)的支撐服務(wù)及基礎(chǔ)業(yè)務(wù)模塊業(yè)務(wù)組件基礎(chǔ)業(yè)務(wù)模塊業(yè)務(wù)組件基礎(chǔ)業(yè)務(wù)模塊子產(chǎn)品:存放與子產(chǎn)品相關(guān)的源文件資源文件夾必須包含的包結(jié)構(gòu)資源文件夾必須包含的包結(jié)構(gòu)

Web資源文件目錄開發(fā)框架、業(yè)務(wù)平臺、子產(chǎn)品項目的webapp目錄如下:開發(fā)框架業(yè)務(wù)平臺子產(chǎn)品

UI前臺編寫規(guī)范規(guī)范目的為提高團隊協(xié)作效率,便于后臺人員添加功能及前端后期優(yōu)化維護,輸出高質(zhì)量的文檔,特制訂此文檔.本規(guī)范文檔一經(jīng)確認,開發(fā)人員必須按本文檔規(guī)范進行前后臺頁面開發(fā).本文檔如有不對或者不合適的地方請及時提出,經(jīng)討論后決定可以更改此文檔.基本準(zhǔn)則符合web標(biāo)準(zhǔn),語義化html,結(jié)構(gòu)表現(xiàn)行為分離,兼容性優(yōu)良.頁面性能方面,代碼要求簡潔明了有序,盡可能的減小服務(wù)器負載,保證最快的解析速度.目錄結(jié)構(gòu)規(guī)范其中common一般只存放公用的css、images、js、jsp、ui(前端組件)以及其他必須的公用前端文件。結(jié)構(gòu)圖如下:2、在example中存放所有示例文件,產(chǎn)品發(fā)布不包含此目錄。3、platform目錄下存放開發(fā)平臺相關(guān)業(yè)務(wù)組件。結(jié)構(gòu)圖如下:4、產(chǎn)品主題目錄themes下存放各類主題,開發(fā)人員以默認主題default為主,結(jié)構(gòu)圖如下:(注,各組件樣式命名規(guī)則如下圖所示com.hzth.組件名.css)5、國際化相關(guān)文件目錄規(guī)劃另定6、前端人員所有html,jsp測試頁面均放在example目錄下的test目錄中。html書寫規(guī)范1.文檔類型聲明及編碼:統(tǒng)一為html5聲明類型<!DOCTYPEhtml>;(注:獨立的JSP頁面中類型聲明必須放在頁面的第一句),編碼統(tǒng)一為<metacharset="utf-8"/>,書寫時利用IDE實現(xiàn)層次分明的縮進;2.非特殊情況下樣式文件必須外鏈至<head>...</head>之間;非特殊情況下JavaScript文件最好外鏈至頁面底部;3.引入樣式文件或JavaScript文件時,須略去默認類型聲明,寫法如下:<linkrel="stylesheet"href="..."/><style>...</style><scriptsrc="..."></script>4.引入JS庫文件,文件名須包含庫名稱及版本號及是否為壓縮版,比如jquery-1.4.1.min.js;引入插件,文件名格式為庫名稱+插件名稱,比如jQuery.cookie.js;5.所有編碼均遵循xhtml標(biāo)準(zhǔn),標(biāo)簽&屬性&屬性命名必須由小寫字母及下劃線數(shù)字組成,且所有標(biāo)簽必須閉合,包括br(<br/>),hr(<hr/>)等;屬性值必須用雙引號包括;6.充分利用無兼容性問題的html自身標(biāo)簽,比如span,em,strong,optgroup,label,等等;需要為html元素添加自定義屬性的時候,首先要考慮下有沒有默認的已有的合適標(biāo)簽去設(shè)置,如果沒有,可以使用須以"data-"為前綴來添加自定義屬性,避免使用"data:"等其他命名方式;7.語義化html,如標(biāo)題根據(jù)重要性用h*(同一頁面只能有一個h1),段落標(biāo)記用p,列表用ul,內(nèi)聯(lián)元素中不可嵌套塊級元素;8.盡可能減少div嵌套,如<divclass="box"><divclass="welcome">歡迎訪問XXX,您的用戶名是<divclass="name">用戶名</div></div></div>完全可以用以下代碼替代:<divclass="box"><p>歡迎訪問XXX,您的用戶名是<span>用戶名</span></p></div>;9.書寫鏈接地址時,必須避免重定向,例如:href="",即須在URL地址后面加上“/”;10.在頁面中盡量避免使用style屬性,即style="…";11.必須為含有描述性表單元素(input,textarea)添加label,如<p>姓名:<inputtype="text"id="name"name="name"/></p>須寫成:<p><labelfor="name">姓名:</label><inputtype="text"id="name"/></p>12.能以背景形式呈現(xiàn)的圖片,盡量寫入css樣式中;13.重要圖片必須加上alt屬性;給重要的元素和截斷的元素加上title;14.給區(qū)塊代碼及重要功能(比如循環(huán))加上注釋,方便后臺添加功能;15.特殊符號使用:盡可能使用代碼替代:比如<(<)&>(>)&空格()&?(?)等等;16.書寫頁面過程中,請考慮向后擴展性;17.class&id參見css書寫規(guī)范.css書寫規(guī)范1.編碼統(tǒng)一為utf-8;(eclipse中創(chuàng)建的css文件默認是GBK編碼,要求變成UTF-8);2.共用css文件base.css由我書寫,每個頁面請務(wù)必都要引入,此文件包含reset及公用樣式,此文件不可隨意修改;3.class與id的使用:id是唯一的并是父級的,class是可以重復(fù)的并是子級的,由于id在后臺用得比較多,為了避免沖突,建議不用id作為樣式選擇器。特殊情況除外。class可用在重復(fù)使用率高及子級中;4.class命名:樣式名稱避免使用中文拼音,盡量使用簡易的單詞組合;總之,命名要語義化,簡明化.5.css屬性書寫順序,建議遵循布局定位屬性-->自身屬性-->文本屬性-->其他屬性.此條可根據(jù)自身習(xí)慣書寫,但盡量保證同類屬性寫在一起.屬性列舉:布局定位屬性主要包括:margin&padding&float(包括clear)&position(相應(yīng)的top,right,bottom,left)&display&visibility&overflow等;自身屬性主要包括:width&height&background&border;文本屬性主要包括:font&color&text-align&text-decoration&text-indent等;其他屬性包括:list-style(列表樣式)&vertical-vlign&cursor&z-index(層疊順序)&zoom等.我所列出的這些屬性只是最常用到的,并不代表全部;6.書寫代碼前,考慮并提高樣式重復(fù)使用率;7.充分利用html自身屬性及樣式繼承原理減少代碼量,比如:<ulclass="list"><li>這兒是標(biāo)題列表<span>2011-03-15</span></ul>定義ul.listli{position:relative}ul.listlispan{position:absolute;right:0}即可實現(xiàn)日期居右顯示8.樣式表中中文字體名,請務(wù)必轉(zhuǎn)碼成unicode碼,以避免編碼錯誤時亂碼;9.背景圖片請盡可能使用sprite技術(shù)(注:前端開發(fā)人員處理),減小http請求,考慮到多人協(xié)作開發(fā),sprite按模塊制作;10.使用table標(biāo)簽時(盡量避免使用table標(biāo)簽),請不要用width/height/cellspacing/cellpadding等table屬性直接定義表現(xiàn),應(yīng)盡可能的利用table自身私有屬性分離結(jié)構(gòu)與表現(xiàn),如thead,tr,th,td,tbody,tfoot,colgroup,scope;(cellspaing及cellpadding的css控制方法:table{border:0;margin:0;border-collapse:collapse;}tableth,tabletd{padding:0;},base.css文件中我會初始化表格樣式)11.用png圖片做圖片時,要求圖片格式為png-8格式,若png-8實在影響圖片質(zhì)量或其中有半透明效果,請為ie6單獨定義背景:(注:針對前端設(shè)計人員)_background:none;_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=crop,src=’img/bg.png’);12.必須為大區(qū)塊樣式添加注釋,小區(qū)塊適量注釋;13.代碼縮進與格式:建議單行書寫,可根據(jù)自身習(xí)慣,后期優(yōu)化我會統(tǒng)一處理;JavaScript書寫規(guī)范1.…..圖片規(guī)范1.所有頁面不參與主題更換影響的元素類圖片均放入common目錄下images文件夾,測試用圖片放于example目錄下的test/images文件夾;2.圖片格式僅限于gif||png||jpg;3.命名全部用小寫英文字母||數(shù)字||_的組合,其中不得包含漢字||空格||特殊字符;盡量用易懂的詞匯,便于團隊其他成員理解;另,命名分頭尾兩部分,用下劃線隔開,比如ad_left01.gif||btn_submit.gif;4.在保證視覺效果的情況下選擇最小的圖片格式與圖片質(zhì)量,以減少加載時間;5.盡量避免使用半透明的png圖片(若使用,請參考css規(guī)范相關(guān)說明);6.運用csssprite技術(shù)集中小的背景圖或圖標(biāo),減小頁面http請求,但注意,請務(wù)必在對應(yīng)的spritepsd源圖中劃參考線,并保存至images目錄下.注釋規(guī)范1.html注釋:注釋格式<!--這兒是注釋-->,'--'只能在注釋的始末位置,不可置入注釋文字區(qū)域;2.css注釋:注釋格式/*這兒是注釋*/;3.JavaScript注釋,單行注釋使用'//這兒是單行注釋',多行注釋使用/*這兒有多行注釋*/;開發(fā)及測試工具約定測試工具:前期開發(fā)僅測試FireFox&IE8&IE7&Safari&IE6,后期優(yōu)化時加入Opera&Chrome;建議測試順序:FireFox-->IE8-->IE7-->Safari,-->Opera-->Chrome-->IE6建議安裝firebug及IETabPlus插件.其他規(guī)范1.開發(fā)過程中嚴格按分工完成頁面,以提高css復(fù)用率,避免重復(fù)開發(fā);2.減小沉冗代碼,書寫所有人都可以看的懂的代碼.簡潔易懂是一種美德.為用戶著想,為服務(wù)器著想.JAVA編寫規(guī)范盡量避免調(diào)用使用Deprecated注解的方法;import類名需要明確,不允許按通配符進行import;importcom.hzth.core.config.Constants;√importcom.hzth.core.*;×不允許出現(xiàn)聲明了變量卻不被使用;不需要的代碼塊必須去除,保持代碼的清潔;盡可能去掉代碼中的//TODOAuto-generatedmethodstub語句;類的屬性,靜態(tài)變量聲明盡可能集中放置,盡可能避免出現(xiàn)屬性,變量散落在文件各處;Action層、Service避免出現(xiàn)SQL或Hql語句;Action層避免直接調(diào)用DAO層方法;盡可能避免request,response對象直接出現(xiàn)在Service和DAO層;類的包命名定義盡可能遵循包的職能定義(如有包定義缺失可以補充);對于可變的路徑名,參數(shù)變量盡可能避免寫死,應(yīng)該通過配置方式解決;盡可能避免循環(huán)體嵌套或考慮是否有替代算法;對于復(fù)雜的邏輯處理應(yīng)該先寫單元測試用例;為了防止sql注入,在使用hibernate或編寫SQL時盡可能使用:var或?方式綁定參數(shù)值;JAVA集合類規(guī)范允許使用的集合CollectionListArrayListLinkedListSetHashSetLinkedHashSetMapHashMapLinkedHashMapAjax應(yīng)用規(guī)范總原則:通過應(yīng)用Ajax技術(shù)提升用戶的WEB體驗,同時滿足用戶業(yè)務(wù)需求,不背離用戶的使用習(xí)慣,并且需要保證應(yīng)用程序的穩(wěn)定性和健壯性;對于頁面內(nèi)容(或分頁列表)局部更新,建議盡可能使用Ajax方式更新數(shù)據(jù);對于表單提交場景,需要根據(jù)實際需要(比如表單提交后頁面需要跳轉(zhuǎn)等場景不適合ajax)進行相應(yīng)Ajax技術(shù)應(yīng)用;對于表單域的數(shù)據(jù)實時聯(lián)動,建議盡可能應(yīng)用Ajax技術(shù)動態(tài)加載數(shù)據(jù);對于部分用戶互動場景(比如快速回復(fù)等),可以考慮應(yīng)用ajax技術(shù)提升用戶體驗;基于性能考慮,對于頁面大量元素構(gòu)造的場景盡可能避免使用ajax技術(shù),而應(yīng)使用Java來替代JS;JSP編寫規(guī)范JSP頁面首行必須設(shè)置為<!DOCTYPEHTML>JSP頁面注釋必須用<%----%>,不允許使用<!>JSP頁面必須設(shè)置Page指令,指定頁面內(nèi)容類型或編碼,編碼目前統(tǒng)一采用UTF-8;<%@pagelanguage="java"pageEncoding="utf-8"%>JSP頁面不允許使用import="java.util.*"JSP頁面不允許出現(xiàn)JAVA代碼;頁面跳轉(zhuǎn)刷新方式都以Ajax方式進行,特殊情況除外頁面DOM.id必須增加${pageID}前綴各頁面通用的引入標(biāo)簽、公共屬性、公用的CSS及JS文件可寫在一個單獨的文件中,在頁面頭部包含進來;所有標(biāo)簽有封裝的必須使用封裝標(biāo)簽,原生標(biāo)簽、S2標(biāo)簽會存在驗證問題所有會引起用戶數(shù)據(jù)刪除、在編輯數(shù)據(jù)丟失的操作都需要彈出確認窗口確認(調(diào)用統(tǒng)一JS方法)頁面表格都統(tǒng)一采用數(shù)據(jù)表格,批量操作按鈕、添加按鈕放在表頭,其他行級操作按鈕放到行尾或查看/編輯頁面里面考慮到換膚功能,CSS及關(guān)聯(lián)的JS的引用路徑需要可配置;書寫的CSS、JS、JSP、模板文件等等都需要做瀏覽器驗證,初步保證IE和火狐正常使用使用標(biāo)簽時統(tǒng)一采用小寫方式;頁面的資源路徑定位避免使用“./../*”相對路徑,應(yīng)根據(jù)Web應(yīng)用的“/”根目錄進行定位;為了避免腳本注入,JSP頁面的值輸出盡可能使用jstl的c:out方式;JS編寫規(guī)范文件名命名規(guī)范公共js文件(組件、工具等)第三方文件名:[層級結(jié)構(gòu).]功能名[-版本].js 例如:jquery.ui-1.0.js jquery-1.6.2.js jsMap.js非第三方文件名:com.ue[.所屬包].文件名.js 例如:com.ue.page.js com.ue.page.drag.js com.ue.cmpt.cmptName.js說明:在第三方基礎(chǔ)上修改的按需決定是否改名。好處:方便文件移動,避免命名沖突;方便根據(jù)代碼定位文件地址;格式規(guī)范統(tǒng)一。文件名命名規(guī)則:小寫開頭,允許大小寫字母、數(shù)字、中劃線,非第三方文件名建議采用駝峰命名法,文件名避免過短(長度少于4),避免過長(長度大于40),做到見名知意。特殊情況討論決定。公共JS文件會在頁面頭部統(tǒng)一引入,非特殊情況不需要再單獨引入。離散js文件(模塊內(nèi)頁面所需)模塊內(nèi)頁面對應(yīng)的離散js文件不做包結(jié)構(gòu)要求,可直接使用:文件名.js的方式存放在模塊內(nèi)相應(yīng)位置,命名規(guī)則參考上面所述規(guī)則。例如:cmPageHelp.js命名空間(NameSpace)格式NS格式模塊專屬代碼:統(tǒng)一命名前綴.模塊名簡寫公共代碼:統(tǒng)一命名前綴.公共標(biāo)識本次V3統(tǒng)一前綴:com.ue例如:com.ue.cm.CourseHelper //一個類com.ue.cm.temp //一個子包或?qū)嵗齝om.ue.cm.inputPage //定義了一個實例com.ue.cmpt.artDialog //定義了一個公用組件com.ue.tool.terminal //定義了一個工具實例固定組件包組件包:com.ue.cmpt //存放自定義或第三方j(luò)s組件工具包:com.ue.tool //存放公用的工具類命名規(guī)范總原則:見名知意、不混淆含義的前提下盡可能簡短命名對象規(guī)約大小寫舉例包名同級唯一的一個單詞或含義唯一的字母組,無駝峰和特殊符號。全部小寫com.ue等模塊名同級唯一的模塊首字母縮寫全部小寫cm、st等類名一或兩個單詞或復(fù)合詞,無特殊符號,駝峰命名。所有單詞首字母大寫Course、Teacher、ExamHelper等屬性名一個或多個單詞或復(fù)合詞,無特殊符號,駝峰命名首字母小寫,后續(xù)單詞首字母大寫name、phoneNumber等方法名一個或多個單詞或復(fù)合詞,無特殊符號,駝峰命名首字母小寫,后續(xù)單詞首字母大寫getName、convertDate等變量名除計數(shù)可以用單個字母如:i,j,k,m,n等外,須符合屬性名命名規(guī)約。首字母小寫,后續(xù)單詞首字母大寫。單個字母的臨時變量小寫。studentTemp、textBuffer等書寫規(guī)范理論上,頁面上不能出現(xiàn)全局的var或function定義的js變量或函數(shù),遇到特殊情況在溝通討論。對象創(chuàng)建說明在創(chuàng)建一個類、實例、變量、方法等之前,要先通過Namespace.register("命名空間");方法申請相應(yīng)對象所屬命名空間。任何一個類、實例必須屬于一個特定命名空間。通過以下方式創(chuàng)建一個類://獲取命名空間Namespace.register("com.ue.cm");com.ue.cm.類名=function(參數(shù)列表){根據(jù)參數(shù)初始化屬性值(類似構(gòu)造函數(shù))}通過以下方式聲明類的方法:com.ue.cm.類名.prototype.方法名=function(參數(shù)列表){ //方法體}可以通過以下方法創(chuàng)建一個類的實例:varmyClass=newcom.ue.cm.className(param1,param2,param3);可以通過如下方法快速聲明一個實例:Namespace.register("com.ue.cm");com.ue.cm.inputPageHelper={ action:/cm/save.action submitForm:function(){//…}}舉例:Namespace.register("com.ue.cm");com.ue.cm.Course=function(name,type,school){ =name;this.type=type;this.school=school;}//com.ue.cm.Course.owner=‘a(chǎn)dministrator’;com.ue.cm.Course.showCourseInfo=function(color){$(‘#block’).html(‘<divstyle=”font-size:13px;color:‘+color+’;”>名稱:’++’,類型:’+this.type+’,學(xué)校’+this.school+’</div>’):}com.ue.cm.ProfessionalCourse=function(name,type,school,classroom){ //類似調(diào)用父類構(gòu)造函數(shù)com.ue.cm.Course.call(name,type,school); this.classroom=classroom;}//子類構(gòu)造函數(shù)首先需要用上層構(gòu)造函數(shù)來建立prototype對象,實現(xiàn)繼承的概念com.ue.cm.ProfessionalCtotype=newcom.ue.cm.Course();com.ue.cm.ProfessionalCtotype.showCourseInfo=function(color){$(‘#block’).html(‘<divstyle=”font-size:13px;color:‘+color+’;”>名稱:’++’,類型:’+this.type+’,學(xué)?!?this.school+’,教室:’+this.classroom+’</div>’):}舉例<script>Namespace.register("com.ue.cm");com.ue.cm.pageCourseInfo={ pname:‘value’, getValueById:function(id){ //…},submitForm:function(params){ //…}}</script><buttononclick=”com.ue.cm.pageCourseInfo.submitForm();”>提交</button>全局變量為了避免命名沖突以及方便第三方插件引入,對全局變量局域化。本次V3項目所有全局變量放到com.ue.global類的屬性中,以后通過com.ue.global.path的形式進行屬性讀寫。例如:Namespace.register("com.ue.global”);com.ue.global={ path:‘<%=path%>’, theme:‘${path}’||‘default’, ajaxAsynchronous:true, maxWindowNumber:10, maxDesktopNumber:10, maxIconNumber:36}使用方法:com.ue.global.pathSQL編寫規(guī)范盡量不使用In、NotIn以及子查詢嵌套,以執(zhí)行效率為最終依據(jù);在查詢時盡量減少多余數(shù)據(jù)的讀取,通過使用where子句來減少返回的記錄數(shù)。語句全部用小寫;禁止使用“select*from”語法,必須標(biāo)明字段名;禁止使用“insertintotable_namevalues(?,?,……)”語法,統(tǒng)一使用“insertintotable_name(col1,col2,……)values(?,?,…...)”;提交語句時,必須一次僅提交一條執(zhí)行SQL語句。多條語句放在一個事務(wù)中分批執(zhí)行;避免顯式或隱含的類型轉(zhuǎn)換。例如在where子句中numeric型和int型的列的比較;對于復(fù)合索引要注意,例如在建立復(fù)合索引時列的順序是F1,F(xiàn)2,F(xiàn)3,則在where或orderby子句中這些字段出現(xiàn)的順序要與建立索引時的字段順序一致,且必須包含第一列。只能是F1或F1,F(xiàn)2或F1,F(xiàn)2,F(xiàn)3。否則SQLSERVER不會用到該索引;SQL語句包含多表連接時,必須加上表的別名;子查詢問題。對于能用連接方式或者視圖方式實現(xiàn)的功能,不要用子查詢。例如:selectnamefromcustomerwherecustomer_idin(selectcustomer_idfromorderwheremoney>1000)。應(yīng)該用如下語句代替:selectnamefromcustomerinnerjoinorderoncustomer.customer_id=order.customer_idwhereorder.money>100;多表關(guān)聯(lián)查詢時,寫法必須遵循以下原則,這樣做有利于建立索引,提高查詢效率。格式如下selectsum(table1.je)fromtable1table1,table2table2,table3table3where(table1的等值條件(=))and(table1的非等值條件)and(table2與table1的關(guān)聯(lián)條件)and(table2的等值條件)and(table2的非等值條件)and(table3與table2的關(guān)聯(lián)條件)and(table3的等值條件)and(table3的非等值條件);當(dāng)SQL語句含有運算符時,運算符需與其他字符串用空格區(qū)分。否則容易導(dǎo)致以下類似問題。在語句selecta–bfromtable中,a,b均為變量。拼寫該語句時,如果a=6,b=-3,則語句變?yōu)閟elect6--3fromtable。--變?yōu)镾ql的注釋,語句報錯;函數(shù)規(guī)范:在Sqlserver中只能使用以下函數(shù),如要使用新的函數(shù)必須申報,審批后才能使用。函數(shù)包括:coalesce,cast,len,left,replace,right,substring,lower,upper,ltrim,rtrim,abs,acos,asin,atan,cos,ceiling,exp,floor,log,power,round,sign,sin,square,sqrt,tan,count,max,min,sum,avg;編碼最佳實踐類的劃分粒度要適當(dāng),不宜繼承太深,根據(jù)每個類的職責(zé)進行劃分多使用設(shè)計模式,盡量提高重用度,多個類中使用相同方法時將其方法提到一個接口中或使用抽象類避免用一個類的實例去訪問其靜態(tài)變量和方法參數(shù)列表盡量控制在5個以內(nèi)。若超過,應(yīng)使用一個容納這些參數(shù)的對象進行傳遞,以提高程序的可讀性和可擴展性盡量避免在循環(huán)中頻繁構(gòu)建和釋放對象或SQL操作

Integer.valueOf(1)替換成newInteger(1)

異常規(guī)范日志規(guī)范系統(tǒng)日志系統(tǒng)日志主要關(guān)注應(yīng)用程序自身的運行狀態(tài)

溫馨提示

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

評論

0/150

提交評論