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

下載本文檔

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

文檔簡(jiǎn)介

項(xiàng)目全稱(chēng)編碼規(guī)范承建方全稱(chēng)2013年4月

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

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

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

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

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

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

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

UserAction

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

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

UserVOmodel層的類(lèi)命名

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

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

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

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

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

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

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

1(表示true)char(1)char(1)char(1)大文本textclobtext【表模板參考】用于數(shù)據(jù)庫(kù)文檔編寫(xiě)數(shù)據(jù)項(xiàng)名稱(chēng)類(lèi)型(精度)說(shuō)明idchar(32)id_表名稱(chēng)char(32)關(guān)鍵字段ft(添加時(shí)間)char(19)0為有效,1為刪除lt(最后修改時(shí)間)char(19)fu(添加的用戶(hù))char(32)lu(最后修改的用戶(hù))char(32)外鍵命名外鍵名統(tǒng)一大寫(xiě),格式為FK_外鍵表_指向表;為了避免PDM中引用線(xiàn)太多,制訂了如下規(guī)則進(jìn)行控制,這些規(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ù)的完整性;長(zhǎng)度最大為30,禁止使用雙引號(hào)索引命名索引名統(tǒng)一大寫(xiě)普通索引格式為IND_{system}_{表名}_{字段名}【例子】IND_EX_SSCORE_COURSE是為ra_sscore的id_course創(chuàng)建索引唯一索引格式為UNI_{system}_{表名}_{字段名}長(zhǎng)度最大為30,禁止使用雙引號(hào)注釋規(guī)范Java注釋按作用分為兩種:實(shí)現(xiàn)注釋?zhuān)簩?duì)代碼作用的解釋?zhuān)浔憩F(xiàn)形式又分為行注釋和段注釋。行注釋?zhuān)簩?duì)一行代碼的解釋說(shuō)明,以“//”開(kāi)頭,結(jié)束屬性的放在行結(jié)尾,其他獨(dú)占一行;publicStringname;//行注釋內(nèi)容

段注釋?zhuān)寒?dāng)需要描述的信息一行不能表述清楚時(shí)用段注釋?zhuān)话惴旁谒枋鲂畔⒌那懊?,形式如下?*

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

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

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

業(yè)務(wù)平臺(tái):提供與業(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資源文件目錄開(kāi)發(fā)框架、業(yè)務(wù)平臺(tái)、子產(chǎn)品項(xiàng)目的webapp目錄如下:開(kāi)發(fā)框架業(yè)務(wù)平臺(tái)子產(chǎn)品

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

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論