應用編碼規範對於軟件自己和軟件開發職員而言尤其重要,有如下幾個緣由:java
(1) 包( Package )的命名web
Package 的名字應該採用完整的英文描述符,都是由一個小寫單詞組成。而且包名的前綴老是一個頂級域名, 一般是 com、edu、gov、mil、net、org 等;spring
如:com.yjhmily.testsql
(2) 類( Class )的命名數據庫
類名應該是個一名詞,採用大小寫混合的方式,每一個單詞的首字母大寫。儘可能保證類名簡潔而富於描述。編程
使用完整單詞,避免縮寫詞 ( 除非工程內有同一縮寫規範或該縮寫詞被更普遍使用,像 URL , HTML)瀏覽器
如:FileDescription安全
(3) 接口( Intece )的命名服務器
基本與 Class 的命名規範相似。在知足 Classd 命名規則的基礎之上,保證開頭第一個字母爲 」I」, 便於與普通的 Class區別開。實在現類名稱取接口名的第二個字母到最後,且知足類名的命名規範;session
如:IMenuEngine
(4) 枚舉( Enum )的命名
基本與 Class 的命名規範相似。在知足 Classd 命名規則的基礎之上,保證開頭第一個字母爲 」E」 , 便於與普通的 Class區別開。
如:EUserRole
(5) 異常( Exception )的命名
異常( Exception ) 一般採用字母 e 表示異常,對於自定義的異常類,其後綴必須爲 Exception
如:BusinessException
(6)方法( Method )的命名
方法名是一個動詞,採用大小寫混合的方式,第一個單詞的首字母小寫,其後單詞的首字母大寫。
方法名儘量的描述出該方法的動做行爲。返回類型爲 Boolean 值的方法通常由「 is 」或「 has 」來開頭
如:
getCurrentUser()
addUser()
hasAuthority()
複製代碼
(7) 參數( Param )的命名
第一個單詞的首字母小寫,其後單詞的首字母大寫。參數目名不答應如下劃線或美圓符號開頭, 當然這在語法上是答應的。參數名應簡短且富於描述。
如:public UserContext getLoginUser(String loginName);
(8)常量字段 ( Constants )的命名
靜態常量字段( static final ) 所有采用大寫字母,單詞之間用下劃線分隔;
如:
public static final Long FEEDBACK;
public static Long USER_STATUS;
複製代碼
一個很好的可遵循的有關注釋的經驗法則是:
問問你本身,你假如從未見過這段代碼,要在公道的時間內有效地明白這段代碼,你須要一些什麼信息???
遵循工程規定的同一註釋格式,通常狀況下會以 codetemplates.xml 格式的文件導進 IDE(Eclipse) 或者用Eclipse默認的;
遵循工程規定的同一代碼格式,通常狀況下直接使用 IDE(Eclipse) 自帶的默認代碼格式對代碼進行格式化;
JSP 文件命名
用完整的英文描述說明 JSP 所完成的功能,儘量包括一個生動的動詞,第一個字母小寫,
如: viewMessage.jsp 、editUser.jsp 等。
Hibernate 映射文件及實體與數據庫表名稱徹底對應;
如: Advertisement.hbm.xml 、 Advertisement.java
數據訪問 DAO
DAO 接口和實現類名稱必須徹底符合正常接口和實現類的命名規則,且最後以 」DAO」 結尾DAO 內的數據訪問方法必須足夠抽象的描述出對數據庫的基本 CRUD 操縱;
如: ICrossAdDAO( 接口 ) 、 CrossAdDAO( 實現類 )
各類操縱數據庫的 HQL 配置文件
HQL 文件的個數原則上與系統的 Services 層的服務個數相等,且以服務名稱命名 HQL 文件;
如: resource.hbm.xml
(1)服務接口和實現
服務接口和實現類必須徹底符合正常接口和實現類的命名規則;以工程定義的服務名爲主體, 並同一以 」Serv」 結尾
如: IResourceServ( 服務接口 ) 、 ResourceServ( 接口實現類 )
(2)服務接口方法
方法名是一個動詞,採用大小寫混合的方式,第一個單詞的首字母小寫,其後單詞的首字母大寫。
方法名儘量的描述出該方法的動做行爲。
(3)業務對象
業務名稱 +BO
(4)查詢參數對象
凡是繼續 Abst***QuerySpec 的查詢參數類所有知足如下規則:
如: QueryProgramSpec
(1)Action 控制層
如: LoginAction( 登陸用 action) , toWelcome( 轉向歡迎頁的 action 方法 )
(2)資源文件
(1) Action 相關配置文件
WebRoot/WEB-INF/spring/action/
功能模塊名稱 +_ApplicationContext.xml
(2)Services 相關配置文件
WebRoot/WEB-INF/spring/services/Services_ApplicationContext.xml
(3)全局性配置文件
WebRoot/WEB-INF/spring/
工程名+_ApplicationContext.xml
(4)JSP 文件
採用完整的英文描述說明 JSP 所完成的功能,儘量包括一個生動的動詞,第一個字母小寫,
如: viewMessage.jsp 、editUser.jsp 等。
全部文件,變量同一採用英文單詞表示。儘可能避免簡寫和縮寫。
java類根據java規範採用駝峯標示,java類首字母大寫,類名中的各個單詞首字母都大寫。
Java類表明現實世界的一個事物,類名詞最好是一個名詞。最好採用現實的名稱。如員工用Employee,而不是Employ避免歧義。最好不是用縮寫empl等。
好比員工模塊,分別爲Employee(實體),EmployeeSQLMapper(數據層),EmployeeService(服務層),EmployeePackager(web層)
經常使用英文名稱(最好能整理一份經常使用詞彙詞典)
根據java駝峯標示命名法,java字段以首字母以小寫開頭,每一個單詞首字母大寫(第一個單詞除外)。
字段表示現實中一個事物的屬性在類中的名稱,最好用名詞。字段名稱應採用最精確的單詞,儘可能採用一個單詞。沒有必要把類名掛在字段前面,如employee的id字段,直接能夠用id,不用使用employeeId,假如出現兩個字段可能產生歧義,能夠增長描述性單詞來區分。
字段命名最好能看詞識意。
方法表示一種行爲,它表明一種動做,最好是一個動詞或者動詞詞組或者第一個單詞爲一個動詞。
屬性方法,get/set開頭,其後跟字段名稱,字段名稱首字母大寫。
數據層方法,只能以insert(插進),delete(刪除),update(更新),select(查找),count(統計)開頭,其餘層方法避免以這個5個單詞開頭,以避免形成誤解。
服務層方法,根據方法的行爲命名,只描述方法的意義,而不採用方法的目的命名。好比系統的添加新用戶,用戶能夠前臺註冊,也能夠治理員後臺添加,方法會被重用,因此最好不要用使用register,採用add會更好寫。避免使用與web層相關的方法。
Web層方法最好是貼近web的語言,如register,login,logout等方法。
變量是一方法中重要的元素,一個貼切的名稱,能讓這段代碼優雅百倍(誇張一下)。變量名首字母小寫。
變量屬於名稱,避免用採用其餘詞性。
採用名稱要能表明在方法中的意義。假如員工列表:
最好是使用List employees或則employeeList而不是往使用List list或則更糟糕的List l,假如應用了List employees和Map employees能夠分別使用employeeList和employeeMap。
自定義類型的變量能夠採用自己的名稱,把首字母改成小寫。
Xml命名採用與類名類似的方法,採用首字母大寫的駝峯標示。
Ibatas映射文件:namespace名稱爲該模塊實體類的名稱,首字母大寫,typealias採用該類*** name。resultMap和sql名稱採用首字母小寫的命名規則,方法名稱與數據層方法名稱一致。
Form和FormItem文件名才用首字母大寫的駝峯標示。Form名稱也使用首字母大寫的格式。Form中的item名稱使用與form表單類的屬性名稱。採用駝峯標示(最好不使用_分隔)
Action文件名稱使用首字母大寫,文件package和action name字段採用全部字母小寫的格式。
url路徑名稱同一採用小寫(全部字母都用小寫),用get方法提交的參數名和url路徑名同樣使用小寫。
(1)J2EE規範
①J2EE規範
J2EE(Java 2 Platform,Enterprise Edition)是SUN公司定義的一個開發分佈式企業級應用的規範。它提供了一個多層次的分佈式應用模型和一系列開發技術規範。多層次分佈式應用模型是指根據功能把應用邏輯分紅多個層次,每一個層次支持相應的服務器和組件,組件在分佈式服務器的組件容器中運行(如Servlet組件在Servlet容器上運行,EJB組件在EJB容器上運行),容器間經過相關的協議進行通信,實現組件間的相互調用。聽從這個規範的開發者將獲得行業的普遍支持,使企業級應用的開發變得簡單、快速。
②J2EE組件層次
J2EE組件和層次如圖1-1所示。
①. J2EE規範定義了以下組件:
A. 客戶端組件
B. Web組件
C. EJB組件
②. J2EE規範定義瞭如下四個層次。
A. 客戶端層(Client Tier)
客戶端層用來實現企業級應用系統的操縱界面和顯示層。另外,某些客戶端程序也可實現業務邏輯。可分爲基於Web的和非基於Web的客戶端兩種狀況。基於Web的狀況下主要做爲企業Web服務器的瀏覽器。非基於Web的客戶層則是獨立的應用程序,能夠完成瘦客戶機沒法完成的任務。
B. Web層
爲企業提供Web服務。包括企業信息發佈等。Web層由Web組件組成。J2EE Web組件包括JSP頁面和Servlets。Web層也能夠包括一些JavaBeans。Web層主要用來處理客戶請求,調用相應的邏輯塊,並把結果以動態網頁的形式返回到客戶端。
C. 業務層(Business Tier)
業務層也叫EJB層或應用層,它由EJB服務器和EJB組件組成。通常狀況下不少開發商把Web服務器和EJB服務器產品結合在一塊兒發佈,稱爲應用服務器。EJB層用來實現企業級信息系統的業務邏輯。這是企業級應用的核心,由運行在業務層中的EJB來處理。一個Bean從客戶端接收數據、處理,而後把數據送到企業信息系統層存儲起來。一樣,一個Bean也能夠從企業信息系統取出數據,發送到客戶端程序。業務層中的EJB要運行在容器中,容器解決了底層的題目,如事務處理、生命週期、狀態治理、多線程安全治理、資源池等。
D. 企業信息系統層(Enterprise Information System tier)
處理企業系統軟件,包括企業基礎系統、數據庫系統及其餘遺留的系統。J2EE未來的版本支持鏈接架構(Connector Architecture)。它是鏈接J2EE平臺和企業信息系統層的標準API。
業務層和Web層共同組成了三層J2EE應用的中間層,其餘兩層是客戶端層和存儲層或企業信息系統層。
E. J2EE的分佈應用技術
爲實現企業級分佈式應用,J2EE定義了豐富的技術標準,符合這些標準的開發工具和API爲開發企業級應用提供支持。這些技術涵蓋數據庫訪問、分佈式通信、安全等。爲分佈式應用提供支持的多方面。
a. 組件技術
J2EE的核心思想是基於組件/容器的應用。每一個組件提供了方法、屬性、事件的接口。組件能夠由多種語言開發。組件是能夠重用的、共享的、分佈的。
b. Servlets和JSP
Servlets用來天生動態頁面或接收用戶請求產生相應操縱(調用EJB)。JSP基於文本。經過容器產生相應的Servlets,使內容和顯示分開。J2EE中提供了Servlet API,用於建立Servlets。
c. EJB技術
EJB規範提供了一種開發和部署服務器端組件的方法。每一個EJB是按功能邏輯劃分的,開發時沒必要關注系統底層細節題目,只關注具體的事務分析。EJB開發完畢後,按規範部署在EJB容器,完成相應的事務功能。EJB支持分佈式計算。真正體現了企業級的應用。
d. 數據庫訪問
不管是傳統的企業信息系統仍是未來的企業信息系統,數據庫都佔有重要的地位。開發分佈式系統要求數據庫訪問具備良好的靈活性和擴展性。JDBC(JavaDatabase Connectivity)是一個獨立於特定的數據庫治理系統的開發接口。它提供一個通用的訪問SQL數據庫和存儲結構的機制,支持基本SQL功能的一個通用底層的應用程序編程接口。它在不一樣的數據庫界面上提供了一個同一的用戶界面。提供了多種多樣的數據庫鏈接方式。J2EE中提供了JDBC API使多種數據庫操縱簡單、可行。
e. 分佈式通信技術
分佈式通信技術是分佈式企業系統的核心技術。J2EE框架爲Web應用和EJB應用提供多種通信模式。
爲了使運行於某一機器上的對象調用另外一臺機器的對象,J2EE實現了以下通信方式:
本規範應用於採用J2EE規範的項目中,全部項目中的JAVA代碼(含JSP,SERVLET,JAVABEAN,EJB)均應遵照這個規範。同時,也可做爲其它項目的參考。
(1)建立具備很強內聚力的類
方法的重要性每每比類的重要性更輕易理解,方法是指執行一個同一函數的一段代碼。類常被錯誤的視爲是一個僅僅用於存放方法的容器。有些開發職員甚至把這種思路做了進一步的發揮,將他們的全部方法放進單個類之中。
① J2EE是一套全然不一樣於傳統應用開發的技術架構,包含不少組件,主要可簡化且規範應用系統的開發與部署,進而進步可移植性、安全與再用價值。
② J2EE 的四層模型
J2EE應用程序是由組件構成的.J2EE組件是具備獨立功能的軟件單元,它們經過相關的類和文件組裝成J2EE應用程序,並與其餘組件交互
J2EE說明書中定義瞭如下的J2EE組件:
J2EE應用程序能夠是基於web方式的,也能夠是基於傳統方式的.
J2EE web層組件能夠是JSP 頁面或Servlets.按照J2EE規範,靜態的HTML頁面和Applets不算是web層組件。正以下圖所示的客戶層那樣,web層可能包含某些 JavaBean 對象來處理用戶輸進,並把輸進發送給運行在業務層上的enterprise bean 來進行處理。
業務層代碼的邏輯用來知足銀行,零售,金融等特殊商務領域的須要,由運行在業務層上的enterprise bean 進行處理.下圖代表了一個enterprise bean 是如何從客戶端程序接收數據,進行處理(假如必要的話), 併發送到EIS 層儲存的,這個過程也能夠逆向進行。有三種企業級的bean: 會話(session) beans, 實體(entity) beans, 和消息驅動(message-driven) beans. 會話bean 表示與客戶端程序的臨時交互.當客戶端程序執行完後, 會話bean 和相關數據就會消失. 相反, 實體bean 表示數據庫的表中一行永久的記錄. 當客戶端程序停止或服務器封閉時, 就會有潛伏的服務保證明體bean 的數據得以保存.消息驅動 bean 結合了會話bean 和 JMS的消息監聽器的特性, 答應一個業務層組件異步接收JMS 消息.
企業信息系統層處理企業信息系統軟件包括企業基礎建設系統例如企業資源計劃(ERP), 大型機事務處理, 數據庫系統,和其它的遺留信息系統. 例如,J2EE 應用組件可能爲了數據庫鏈接須要訪問企業信息系統3, J2EE平臺由一整套服務(Services)、應用程序接口(APIs)和協議構成,它對開發基於Web的多層應用提供了功能支持,下面對J2EE中的 13種技術規範進行簡單的描述
JDBC API爲訪問不一樣的數據庫提供了一種同一的途徑,象ODBC同樣,JDBC對開發者屏蔽了一些細節題目,另外,JDCB對數據庫的訪問也具備平臺無關性。 JNDI(Java Name and Directory Inte***ce)
JNDI API被用於執行名字和目錄服務。它提供了一致的模型來存取和操縱企業級的資源如DNS和LDAP,本地文件系統,或應用服務器中的對象。
J2EE技術之因此贏得媒體普遍重視的緣由之一就是 EJB。它們提供了一個框架來開發和實施分佈式商務邏輯,由此很明顯地簡化了具備可伸縮性和高度複雜的企業級應用的開發。EJB規範定義了EJB組件在何 時如何與它們的容器進行交互做用。容器負責提供公用的服務,例如目錄服務、事務治理、安全性、資源緩衝池以及容錯性。但這裏值得留意的是,EJB並非實 現J2EE的惟一途徑。正是因爲J2EE的開放性,使得有的廠商可以以一種和EJB平行的方式來達到一樣的目的。 RMI(Remote Method Invoke)
正如其名字所表示的那樣,RMI協議調用遠程對象上方法。它使用了序列化方式在客戶端和服務器端傳遞數據。 RMI是一種被EJB使用的更底層的協議。
在Java IDL的支持下,開發職員能夠將Java和CORBA集成在一塊兒。他們能夠建立Java對象並使之可在CORBA ORB中展開, 或者他們還能夠建立Java類並做爲和其它ORB一塊兒展開的CORBA對象的客戶。後一種方法提供了另一種途徑,經過它Java能夠被用於將你的新的應 用和舊的系統相集成。 JSP(Java Server Pages)
JSP頁面由HTML代碼和嵌進其中的Java代碼所組成。服務器在頁面被客戶端所請求之後對這些Java代碼進行處理,而後將天生的HTML頁面返回給客戶真個瀏覽器。
Servlet是一種小型的Java程序,它擴展了Web服務器的功能。做爲一種服務器真個應用,當被請求時開始執行,這和CGI Perl腳本很類似。Servlet提供的功能大多與JSP相似,不過實現的方式不一樣。JSP一般是大多數HTML代碼中嵌進少許的Java代碼,而 servlets所有由Java寫成而且天生HTML。
XML是一種能夠用來定義其它標記語言的語言。它被用來在不一樣的商務過程當中共享數據。
XML的發展和Java是相互獨立的,可是,它和Java具備的相同目標正是平
MS是用於和麪向消息的中間件相互通信的應用程序接口(API)。它既支持點對點的域,有支持發佈/訂閱 (publish/subscribe)類型的域,而且提供對下列類型的支持:經承認的消息傳遞,事務型消息的傳遞,一致性消息和具備持久性的訂閱者支 持。JMS還提供了另外一種方式來對您的應用與舊的後臺系統相集成。
JTA定義了一種標準的API,應用系統由此能夠訪問各類事務監控。
JTS是CORBA OTS事務監控的基本的實現。JTS規定了事務治理器的實現方式。該事務治理器是在高層支持Java Transaction API (JTA)規範,而且在較底層實現OMG OTS specification的Java映像。JTS事務治理器爲應用服務器、資源治理器、獨立的應用以及通信資源治理器提供了事務服務。
JavaMail是用於存取郵件服務器的API,它提供了一套郵件服務器的抽象類。不只支持SMTP服務器,也支持IMAP服務器。
JavaMail利用JAF來處理MIME編碼的郵件附件。MIME的字節流能夠被轉換成Java對象,或者轉換自 Java對象。大多數應用均可以不須要直接使用JAF。