??
???? 最近經(jīng)常看一些朋友寫的源代碼,總是感覺(jué)編碼規(guī)范問(wèn)題還沒(méi)有成為大家的關(guān)注點(diǎn),導(dǎo)致代碼的通用可讀性相對(duì)比較差;
所以在此嘮叨幾句編碼規(guī)范(以struts2+spring2+hibernate3架構(gòu)的項(xiàng)目為例),大家各取所需,歡迎拍磚!
一、規(guī)范存在的意義
??? 應(yīng)用編碼規(guī)范對(duì)于軟件本身和軟件開(kāi)發(fā)人員而言尤為重要,有以下幾個(gè)原因:
??? 1、好的編碼規(guī)范可以盡可能的減少一個(gè)軟件的維護(hù)成本 , 并且?guī)缀鯖](méi)有任何一個(gè)軟件,在其整個(gè)生命周期中,均由最初的開(kāi)發(fā)人員來(lái)維護(hù);
??? 2、好的編碼規(guī)范可以改善軟件的可讀性,可以讓開(kāi)發(fā)人員盡快而徹底地理解新的代碼;
??? 3、好的編碼規(guī)范可以最大限度的提高團(tuán)隊(duì)開(kāi)發(fā)的合作效率;
??? 4、長(zhǎng)期的規(guī)范性編碼還可以讓開(kāi)發(fā)人員養(yǎng)成好的編碼習(xí)慣,甚至鍛煉出更加嚴(yán)謹(jǐn)?shù)乃季S;
二、命名規(guī)范
??? 1、一般概念
??????? 1、盡量使用完整的英文描述符
??? ??? 2、采用適用于相關(guān)領(lǐng)域的術(shù)語(yǔ)
??? ??? 3、采用大小寫混合使名字可讀
??? ??? 4、盡量少用縮寫,但如果用了,必須符合整個(gè)工程中的統(tǒng)一定義
??? ???
??? ??? 5、避免使用長(zhǎng)的名字(小于 15 個(gè)字母為正常選擇)
??? ??? 6、避免使用類似的名字,或者僅僅是大小寫不同的名字
??? ??? 7、避免使用下劃線(除靜態(tài)常量等)
???? 2、標(biāo)識(shí)符類型說(shuō)明
??????? 1、包( Package )的命名
??? ??? ??? Package 的名字應(yīng)該采用完整的英文描述符,都是由一個(gè)小寫單詞組成。并且包名的前綴總是一個(gè)頂級(jí)域名,
??? ??? ??? 通常是 com、edu、gov、mil、net、org 等;
??? ??? ??? 如: com.yjhmily.test
??? ??? 2、類( Class )的命名
??? ??? ??? 類名應(yīng)該是個(gè)一名詞,采用大小寫混合的方式,每個(gè)單詞的首字母大寫。盡量保證類名簡(jiǎn)潔而富于描述。
??? ??? ??? 使用完整單詞,避免縮寫詞 ( 除非工程內(nèi)有統(tǒng)一縮寫規(guī)范或該縮寫詞被更廣泛使用,像 URL , HTML)
??? ??? 如: FileDescription
??? ??? 3、接口( Interface )的命名
??? ??? ??? 基本與 Class 的命名規(guī)范類似。在滿足 Classd 命名規(guī)則的基礎(chǔ)之上,保證開(kāi)頭第一個(gè)字母為 ”I”,
??? ??? ??? 便于與普通的 Class區(qū)別開(kāi)。其實(shí)現(xiàn)類名稱取接口名的第二個(gè)字母到最后,且滿足類名的命名規(guī)范;
??? ??? 如: IMenuEngine
??? ??? 4、枚舉( Enum )的命名
??? ??? ??? 基本與 Class 的命名規(guī)范類似。在滿足 Classd 命名規(guī)則的基礎(chǔ)之上,保證開(kāi)頭第一個(gè)字母為 ”E” ,
??? ??? ??? 便于與普通的 Class區(qū)別開(kāi)。
??? ??? 如: EUserRole
??? ??? 5、異常( Exception )的命名
??? ??? ??? 異常( Exception ) 通常采用字母 e 表示異常,對(duì)于自定義的異常類,其后綴必須為 Exception
??? ??? 如: BusinessException
??? ??? 6、方法( Method )的命名
??? ??? ??? 方法名是一個(gè)動(dòng)詞,采用大小寫混合的方式,第一個(gè)單詞的首字母小寫,其后單詞的首字母大寫。
??? ??? ??? 方法名盡可能的描述出該方法的動(dòng)作行為。返回類型為 Boolean 值的方法一般由“ is ”或“ has ”來(lái)開(kāi)頭
??? ??? 如: getCurrentUser() 、 addUser() 、 hasAuthority()
??? ??? 7、參數(shù)( Param )的命名
??? ??? ??? 第一個(gè)單詞的首字母小寫,其后單詞的首字母大寫。參數(shù)量名不允許以下劃線或美元符號(hào)開(kāi)頭,
??? ??? ??? 雖然這在語(yǔ)法上是允許的。參數(shù)名應(yīng)簡(jiǎn)短且富于描述。
??? ??? 如: public UserContext getLoginUser(String loginName);
??? ???
??? ??? 8、常量字段 ( Constants )的命名
??? ??? ??? 靜態(tài)常量字段( static final ) 全部采用大寫字母,單詞之間用下劃線分隔;
??? ??? 如: public static final Long FEEDBACK;
??????? public static Long USER_STATUS;
?三、注釋規(guī)范
??????? 一個(gè)很好的可遵循的有關(guān)注釋的經(jīng)驗(yàn)法則是:
??? ??? ??? 問(wèn)問(wèn)你自己,你如果從未見(jiàn)過(guò)這段代碼,要在合理的時(shí)間內(nèi)有效地明白這段代碼,你需要一些什么信息???
??? ??? 1、一般概念
??????????? 1、注釋應(yīng)該增加代碼的清晰度
??? ??? ??? 2、保持注釋的簡(jiǎn)潔
??? ??? ??? 3、在寫代碼之前或同時(shí)寫注釋
??? ??? ??? 4、注釋出為什么做了一些事,而不僅僅是做了什么
??? ??? 2、注釋哪些部分
??????????? 1、Java 文件:必須寫明版權(quán)信息以及該文件的創(chuàng)建時(shí)間和作者;
??? ??? ??? 2、類:類的目的、即類所完成的功能,以及該類創(chuàng)建的時(shí)間和作者名稱;多人一次編輯或修改同一個(gè)類時(shí),
??? ??? ??? ??? 應(yīng)在作者名稱處出現(xiàn)多人的名稱;
??? ??? ??? 3、接口: 在滿足類注釋的基礎(chǔ)之上,接口注釋應(yīng)該包含設(shè)置接口的目的、它應(yīng)如何被使用以及如何不被使用。
??? ??? ??? ??? 在接口注釋清楚的前提下對(duì)應(yīng)的實(shí)現(xiàn)類可以不加注釋;
??? ??? ??? 4、方法注釋: 對(duì)于設(shè)置 (Set 方法 ) 與獲取 (Get 方法 ) 成員的方法,在成員變量已有說(shuō)明的情況下,
??? ??? ??? ??? 可以不加注釋;普通成員方法要求說(shuō)明完成什么功能,參數(shù)含義是什么且返回值什么;另外方法的創(chuàng)建
??? ??? ??? ??? 時(shí)間必須注釋清楚,為將來(lái)的維護(hù)和閱讀提供寶貴線索;
??? ??? ??? 5、方法內(nèi)部注釋: 控制結(jié)構(gòu),代碼做了些什么以及為什么這樣做,處理順序等,特別是復(fù)雜的邏輯處理部分,
??? ??? ??? ??? 要盡可能的給出詳細(xì)的注釋;
??? ??? ??? 6、參數(shù): 參數(shù)含義、及其它任何約束或前提條件;
??? ??? ??? 7、屬性: 字段描述;
??? ??? ??? 8、局部 ( 中間 ) 變量: 無(wú)特別意義的情況下不加注釋;
??? ??? 3、注釋格式
??????????? 遵循工程規(guī)定的統(tǒng)一注釋格式,一般情況下會(huì)以 codetemplates.xml 格式的文件導(dǎo)入 IDE(Eclipse)
??? ??? ??? 或者用Eclipse默認(rèn)的;
四、代碼格式規(guī)范
??? ??? ??? 遵循工程規(guī)定的統(tǒng)一代碼格式,一般情況下直接使用 IDE(Eclipse) 自帶的默認(rèn)代碼格式對(duì)代碼進(jìn)行格式化;
五、其他規(guī)范
??? ?? JSP 文件命名
??? ??? ??? 采用完整的英文描述說(shuō)明 JSP 所完成的功能,盡可能包括一個(gè)生動(dòng)的動(dòng)詞,第一個(gè)字母小寫,
??? ??? 如: viewMessage.jsp 、editUser.jsp 等。
六、工程特有命名規(guī)范
??????? 1、持久層
??????????? 1、 Hibernate 映射文件及實(shí)體
??? ??? ??? ??? 與數(shù)據(jù)庫(kù)表名稱完全對(duì)應(yīng);
??? ??? ??? ??? 如: Advertisement.hbm.xml 、 Advertisement.java
??? ??? ??? 2、數(shù)據(jù)訪問(wèn) DAO
??? ??? ??? ??? DAO 接口和實(shí)現(xiàn)類名稱必須完全符合正常接口和實(shí)現(xiàn)類的命名規(guī)則,且最后以 ”DAO” 結(jié)尾
??? ??? ??? ??? DAO 內(nèi)的數(shù)據(jù)訪問(wèn)方法必須足夠抽象的描述出對(duì)數(shù)據(jù)庫(kù)的基本 CRUD 操作;
??? ??? ??? ??? 如: ICrossAdDAO( 接口 ) 、 CrossAdDAO( 實(shí)現(xiàn)類 )
??? ??? ???
??? ??? ??? 3、各種操作數(shù)據(jù)庫(kù)的 HQL 配置文件
??? ??? ??? ??? HQL 文件的個(gè)數(shù)原則上與系統(tǒng)的 Services 層的服務(wù)個(gè)數(shù)相等,且以服務(wù)名稱命名 HQL 文件;
??? ??? ??? ??? 如: resource.hbm.xml
??? ???2、服務(wù)層
??????????? 1、服務(wù)接口和實(shí)現(xiàn)
??? ??? ??? ??? 服務(wù)接口和實(shí)現(xiàn)類必須完全符合正常接口和實(shí)現(xiàn)類的命名規(guī)則;以工程定義的服務(wù)名為主體,
??? ??? ??? ??? 并統(tǒng)一以 ”Serv” 結(jié)尾
??? ??? ??? ??? 如: IResourceServ( 服務(wù)接口 ) 、 ResourceServ( 接口實(shí)現(xiàn)類 )
??? ??? ??? 2、服務(wù)接口方法
??? ??? ??? ??? 方法名是一個(gè)動(dòng)詞,采用大小寫混合的方式,第一個(gè)單詞的首字母小寫,其后單詞的首字母大寫。
??? ??? ?? 方法名盡可能的描述出該方法的動(dòng)作行為。
??? ??? ??? ??? 返回類型為 Boolean 值:用“ is ”或“ has ”來(lái)開(kāi)頭
??? ??? ??? ??? 得到某數(shù)據(jù): get+ 數(shù)據(jù)描述名詞復(fù)數(shù) + 數(shù)據(jù)類型;
??? ??? ??? ??? 得到所有數(shù)據(jù): get+All+ 數(shù)據(jù)描述名詞復(fù)數(shù) + 數(shù)據(jù)類型;
??? ??? ??? ??? 通過(guò) XXX 得到 / 查詢某數(shù)據(jù): get/query+ 數(shù)據(jù)描述名詞復(fù)數(shù) + 數(shù)據(jù)類型 +By+ 條件;
??? ??? ??? ??? 添加某數(shù)據(jù): save/add+ 數(shù)據(jù)描述名詞 ()
??? ??? ??? ??? 更新某數(shù)據(jù): save/update+ 數(shù)據(jù)描述名詞;
??? ??? ??? ??? 刪除某數(shù)據(jù): delete/remove+ 數(shù)據(jù)描述名詞;
??? ??? ??? 3、業(yè)務(wù)對(duì)象
??? ??? ??? ??? 業(yè)務(wù)名稱 +BO
??? ??? ??? 4、查詢參數(shù)對(duì)象
??? ??? ??? ??? 凡是繼承 Abst***QuerySpec 的查詢參數(shù)類全部滿足以下規(guī)則:
??? ??? ??? ??? Query+ 所要查詢的數(shù)據(jù)描述名詞 +Spec
??? ??? ??? ??? 作為參數(shù)傳入時(shí),參數(shù)名必須為:所要查詢的數(shù)據(jù)描述名詞 +Spec
??? ??? ??? ??? 如: QueryProgramSpec
??? ???3、MVC 層???????????
??????????? 1、Action 控制層
??? ??? ??? ??? Action 類名:功能模塊名稱 +Action ;
??? ??? ??? ??? Actoin 方法名稱盡可能的描述出頁(yè)面遷移的去向
??? ??? ??? ??? 如: LoginAction( 登錄用 action) , toWelcome( 轉(zhuǎn)向歡迎頁(yè)的 action 方法 )
??? ??? ??? 2、資源文件
??? ??? ??? ??? 系統(tǒng)全局資源文件: globalMessages_+ 字符編碼類型 +.properties
??? ??? ??? ??? 功能模塊內(nèi)部的資源文件: package.properties
??? ??? 4、Spring 配置文件
??????????? 1、Action 相關(guān)配置文件
??? ??? ??? ??? 文件目錄: WebRoot/WEB-INF/spring/action/ 功能模塊名稱 +_ApplicationContext.xml
??? ??? ??? 2、Services 相關(guān)配置文件
??? ??? ??? ??? 文件目錄: WebRoot/WEB-INF/spring/services/Services_ApplicationContext.xml
??? ??? ??? 3、全局性配置文件
??? ??? ??? ??? 文件目錄: WebRoot/WEB-INF/spring/工程名+_ApplicationContext.xml
??? ???5、JSP 文件
??? ??? ??? 采用完整的英文描述說(shuō)明 JSP 所完成的功能,盡可能包括一個(gè)生動(dòng)的動(dòng)詞,第一個(gè)字母小寫,
??? ??? ??? 如: viewMessage.jsp 、editUser.jsp 等。
???? 最近經(jīng)常看一些朋友寫的源代碼,總是感覺(jué)編碼規(guī)范問(wèn)題還沒(méi)有成為大家的關(guān)注點(diǎn),導(dǎo)致代碼的通用可讀性相對(duì)比較差;
所以在此嘮叨幾句編碼規(guī)范(以struts2+spring2+hibernate3架構(gòu)的項(xiàng)目為例),大家各取所需,歡迎拍磚!
一、規(guī)范存在的意義
??? 應(yīng)用編碼規(guī)范對(duì)于軟件本身和軟件開(kāi)發(fā)人員而言尤為重要,有以下幾個(gè)原因:
??? 1、好的編碼規(guī)范可以盡可能的減少一個(gè)軟件的維護(hù)成本 , 并且?guī)缀鯖](méi)有任何一個(gè)軟件,在其整個(gè)生命周期中,均由最初的開(kāi)發(fā)人員來(lái)維護(hù);
??? 2、好的編碼規(guī)范可以改善軟件的可讀性,可以讓開(kāi)發(fā)人員盡快而徹底地理解新的代碼;
??? 3、好的編碼規(guī)范可以最大限度的提高團(tuán)隊(duì)開(kāi)發(fā)的合作效率;
??? 4、長(zhǎng)期的規(guī)范性編碼還可以讓開(kāi)發(fā)人員養(yǎng)成好的編碼習(xí)慣,甚至鍛煉出更加嚴(yán)謹(jǐn)?shù)乃季S;
二、命名規(guī)范
??? 1、一般概念
??????? 1、盡量使用完整的英文描述符
??? ??? 2、采用適用于相關(guān)領(lǐng)域的術(shù)語(yǔ)
??? ??? 3、采用大小寫混合使名字可讀
??? ??? 4、盡量少用縮寫,但如果用了,必須符合整個(gè)工程中的統(tǒng)一定義
??? ???
??? ??? 5、避免使用長(zhǎng)的名字(小于 15 個(gè)字母為正常選擇)
??? ??? 6、避免使用類似的名字,或者僅僅是大小寫不同的名字
??? ??? 7、避免使用下劃線(除靜態(tài)常量等)
???? 2、標(biāo)識(shí)符類型說(shuō)明
??????? 1、包( Package )的命名
??? ??? ??? Package 的名字應(yīng)該采用完整的英文描述符,都是由一個(gè)小寫單詞組成。并且包名的前綴總是一個(gè)頂級(jí)域名,
??? ??? ??? 通常是 com、edu、gov、mil、net、org 等;
??? ??? ??? 如: com.yjhmily.test
??? ??? 2、類( Class )的命名
??? ??? ??? 類名應(yīng)該是個(gè)一名詞,采用大小寫混合的方式,每個(gè)單詞的首字母大寫。盡量保證類名簡(jiǎn)潔而富于描述。
??? ??? ??? 使用完整單詞,避免縮寫詞 ( 除非工程內(nèi)有統(tǒng)一縮寫規(guī)范或該縮寫詞被更廣泛使用,像 URL , HTML)
??? ??? 如: FileDescription
??? ??? 3、接口( Interface )的命名
??? ??? ??? 基本與 Class 的命名規(guī)范類似。在滿足 Classd 命名規(guī)則的基礎(chǔ)之上,保證開(kāi)頭第一個(gè)字母為 ”I”,
??? ??? ??? 便于與普通的 Class區(qū)別開(kāi)。其實(shí)現(xiàn)類名稱取接口名的第二個(gè)字母到最后,且滿足類名的命名規(guī)范;
??? ??? 如: IMenuEngine
??? ??? 4、枚舉( Enum )的命名
??? ??? ??? 基本與 Class 的命名規(guī)范類似。在滿足 Classd 命名規(guī)則的基礎(chǔ)之上,保證開(kāi)頭第一個(gè)字母為 ”E” ,
??? ??? ??? 便于與普通的 Class區(qū)別開(kāi)。
??? ??? 如: EUserRole
??? ??? 5、異常( Exception )的命名
??? ??? ??? 異常( Exception ) 通常采用字母 e 表示異常,對(duì)于自定義的異常類,其后綴必須為 Exception
??? ??? 如: BusinessException
??? ??? 6、方法( Method )的命名
??? ??? ??? 方法名是一個(gè)動(dòng)詞,采用大小寫混合的方式,第一個(gè)單詞的首字母小寫,其后單詞的首字母大寫。
??? ??? ??? 方法名盡可能的描述出該方法的動(dòng)作行為。返回類型為 Boolean 值的方法一般由“ is ”或“ has ”來(lái)開(kāi)頭
??? ??? 如: getCurrentUser() 、 addUser() 、 hasAuthority()
??? ??? 7、參數(shù)( Param )的命名
??? ??? ??? 第一個(gè)單詞的首字母小寫,其后單詞的首字母大寫。參數(shù)量名不允許以下劃線或美元符號(hào)開(kāi)頭,
??? ??? ??? 雖然這在語(yǔ)法上是允許的。參數(shù)名應(yīng)簡(jiǎn)短且富于描述。
??? ??? 如: public UserContext getLoginUser(String loginName);
??? ???
??? ??? 8、常量字段 ( Constants )的命名
??? ??? ??? 靜態(tài)常量字段( static final ) 全部采用大寫字母,單詞之間用下劃線分隔;
??? ??? 如: public static final Long FEEDBACK;
??????? public static Long USER_STATUS;
?三、注釋規(guī)范
??????? 一個(gè)很好的可遵循的有關(guān)注釋的經(jīng)驗(yàn)法則是:
??? ??? ??? 問(wèn)問(wèn)你自己,你如果從未見(jiàn)過(guò)這段代碼,要在合理的時(shí)間內(nèi)有效地明白這段代碼,你需要一些什么信息???
??? ??? 1、一般概念
??????????? 1、注釋應(yīng)該增加代碼的清晰度
??? ??? ??? 2、保持注釋的簡(jiǎn)潔
??? ??? ??? 3、在寫代碼之前或同時(shí)寫注釋
??? ??? ??? 4、注釋出為什么做了一些事,而不僅僅是做了什么
??? ??? 2、注釋哪些部分
??????????? 1、Java 文件:必須寫明版權(quán)信息以及該文件的創(chuàng)建時(shí)間和作者;
??? ??? ??? 2、類:類的目的、即類所完成的功能,以及該類創(chuàng)建的時(shí)間和作者名稱;多人一次編輯或修改同一個(gè)類時(shí),
??? ??? ??? ??? 應(yīng)在作者名稱處出現(xiàn)多人的名稱;
??? ??? ??? 3、接口: 在滿足類注釋的基礎(chǔ)之上,接口注釋應(yīng)該包含設(shè)置接口的目的、它應(yīng)如何被使用以及如何不被使用。
??? ??? ??? ??? 在接口注釋清楚的前提下對(duì)應(yīng)的實(shí)現(xiàn)類可以不加注釋;
??? ??? ??? 4、方法注釋: 對(duì)于設(shè)置 (Set 方法 ) 與獲取 (Get 方法 ) 成員的方法,在成員變量已有說(shuō)明的情況下,
??? ??? ??? ??? 可以不加注釋;普通成員方法要求說(shuō)明完成什么功能,參數(shù)含義是什么且返回值什么;另外方法的創(chuàng)建
??? ??? ??? ??? 時(shí)間必須注釋清楚,為將來(lái)的維護(hù)和閱讀提供寶貴線索;
??? ??? ??? 5、方法內(nèi)部注釋: 控制結(jié)構(gòu),代碼做了些什么以及為什么這樣做,處理順序等,特別是復(fù)雜的邏輯處理部分,
??? ??? ??? ??? 要盡可能的給出詳細(xì)的注釋;
??? ??? ??? 6、參數(shù): 參數(shù)含義、及其它任何約束或前提條件;
??? ??? ??? 7、屬性: 字段描述;
??? ??? ??? 8、局部 ( 中間 ) 變量: 無(wú)特別意義的情況下不加注釋;
??? ??? 3、注釋格式
??????????? 遵循工程規(guī)定的統(tǒng)一注釋格式,一般情況下會(huì)以 codetemplates.xml 格式的文件導(dǎo)入 IDE(Eclipse)
??? ??? ??? 或者用Eclipse默認(rèn)的;
四、代碼格式規(guī)范
??? ??? ??? 遵循工程規(guī)定的統(tǒng)一代碼格式,一般情況下直接使用 IDE(Eclipse) 自帶的默認(rèn)代碼格式對(duì)代碼進(jìn)行格式化;
五、其他規(guī)范
??? ?? JSP 文件命名
??? ??? ??? 采用完整的英文描述說(shuō)明 JSP 所完成的功能,盡可能包括一個(gè)生動(dòng)的動(dòng)詞,第一個(gè)字母小寫,
??? ??? 如: viewMessage.jsp 、editUser.jsp 等。
六、工程特有命名規(guī)范
??????? 1、持久層
??????????? 1、 Hibernate 映射文件及實(shí)體
??? ??? ??? ??? 與數(shù)據(jù)庫(kù)表名稱完全對(duì)應(yīng);
??? ??? ??? ??? 如: Advertisement.hbm.xml 、 Advertisement.java
??? ??? ??? 2、數(shù)據(jù)訪問(wèn) DAO
??? ??? ??? ??? DAO 接口和實(shí)現(xiàn)類名稱必須完全符合正常接口和實(shí)現(xiàn)類的命名規(guī)則,且最后以 ”DAO” 結(jié)尾
??? ??? ??? ??? DAO 內(nèi)的數(shù)據(jù)訪問(wèn)方法必須足夠抽象的描述出對(duì)數(shù)據(jù)庫(kù)的基本 CRUD 操作;
??? ??? ??? ??? 如: ICrossAdDAO( 接口 ) 、 CrossAdDAO( 實(shí)現(xiàn)類 )
??? ??? ???
??? ??? ??? 3、各種操作數(shù)據(jù)庫(kù)的 HQL 配置文件
??? ??? ??? ??? HQL 文件的個(gè)數(shù)原則上與系統(tǒng)的 Services 層的服務(wù)個(gè)數(shù)相等,且以服務(wù)名稱命名 HQL 文件;
??? ??? ??? ??? 如: resource.hbm.xml
??? ???2、服務(wù)層
??????????? 1、服務(wù)接口和實(shí)現(xiàn)
??? ??? ??? ??? 服務(wù)接口和實(shí)現(xiàn)類必須完全符合正常接口和實(shí)現(xiàn)類的命名規(guī)則;以工程定義的服務(wù)名為主體,
??? ??? ??? ??? 并統(tǒng)一以 ”Serv” 結(jié)尾
??? ??? ??? ??? 如: IResourceServ( 服務(wù)接口 ) 、 ResourceServ( 接口實(shí)現(xiàn)類 )
??? ??? ??? 2、服務(wù)接口方法
??? ??? ??? ??? 方法名是一個(gè)動(dòng)詞,采用大小寫混合的方式,第一個(gè)單詞的首字母小寫,其后單詞的首字母大寫。
??? ??? ?? 方法名盡可能的描述出該方法的動(dòng)作行為。
??? ??? ??? ??? 返回類型為 Boolean 值:用“ is ”或“ has ”來(lái)開(kāi)頭
??? ??? ??? ??? 得到某數(shù)據(jù): get+ 數(shù)據(jù)描述名詞復(fù)數(shù) + 數(shù)據(jù)類型;
??? ??? ??? ??? 得到所有數(shù)據(jù): get+All+ 數(shù)據(jù)描述名詞復(fù)數(shù) + 數(shù)據(jù)類型;
??? ??? ??? ??? 通過(guò) XXX 得到 / 查詢某數(shù)據(jù): get/query+ 數(shù)據(jù)描述名詞復(fù)數(shù) + 數(shù)據(jù)類型 +By+ 條件;
??? ??? ??? ??? 添加某數(shù)據(jù): save/add+ 數(shù)據(jù)描述名詞 ()
??? ??? ??? ??? 更新某數(shù)據(jù): save/update+ 數(shù)據(jù)描述名詞;
??? ??? ??? ??? 刪除某數(shù)據(jù): delete/remove+ 數(shù)據(jù)描述名詞;
??? ??? ??? 3、業(yè)務(wù)對(duì)象
??? ??? ??? ??? 業(yè)務(wù)名稱 +BO
??? ??? ??? 4、查詢參數(shù)對(duì)象
??? ??? ??? ??? 凡是繼承 Abst***QuerySpec 的查詢參數(shù)類全部滿足以下規(guī)則:
??? ??? ??? ??? Query+ 所要查詢的數(shù)據(jù)描述名詞 +Spec
??? ??? ??? ??? 作為參數(shù)傳入時(shí),參數(shù)名必須為:所要查詢的數(shù)據(jù)描述名詞 +Spec
??? ??? ??? ??? 如: QueryProgramSpec
??? ???3、MVC 層???????????
??????????? 1、Action 控制層
??? ??? ??? ??? Action 類名:功能模塊名稱 +Action ;
??? ??? ??? ??? Actoin 方法名稱盡可能的描述出頁(yè)面遷移的去向
??? ??? ??? ??? 如: LoginAction( 登錄用 action) , toWelcome( 轉(zhuǎn)向歡迎頁(yè)的 action 方法 )
??? ??? ??? 2、資源文件
??? ??? ??? ??? 系統(tǒng)全局資源文件: globalMessages_+ 字符編碼類型 +.properties
??? ??? ??? ??? 功能模塊內(nèi)部的資源文件: package.properties
??? ??? 4、Spring 配置文件
??????????? 1、Action 相關(guān)配置文件
??? ??? ??? ??? 文件目錄: WebRoot/WEB-INF/spring/action/ 功能模塊名稱 +_ApplicationContext.xml
??? ??? ??? 2、Services 相關(guān)配置文件
??? ??? ??? ??? 文件目錄: WebRoot/WEB-INF/spring/services/Services_ApplicationContext.xml
??? ??? ??? 3、全局性配置文件
??? ??? ??? ??? 文件目錄: WebRoot/WEB-INF/spring/工程名+_ApplicationContext.xml
??? ???5、JSP 文件
??? ??? ??? 采用完整的英文描述說(shuō)明 JSP 所完成的功能,盡可能包括一個(gè)生動(dòng)的動(dòng)詞,第一個(gè)字母小寫,
??? ??? ??? 如: viewMessage.jsp 、editUser.jsp 等。
posted on 2007-09-27 13:31 kangxm 閱讀(3681) 評(píng)論(10) 編輯 收藏 所屬分類: J2EE 、開(kāi)發(fā)環(huán)境&工具 、軟件開(kāi)發(fā)