Decode360's Blog

          業(yè)精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

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

          ??????????? 采用完整的英文描述說明 JSP 所完成的功能,盡可能包括一個生動的動詞,第一個字母小寫,如: viewMessage.jsp、editUser.jsp 等。
          ?
          ?
          ?
          posted on 2008-08-04 14:55 decode360 閱讀(138) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 兰溪市| 时尚| 镇平县| 方城县| 土默特右旗| 屏山县| 南雄市| 临猗县| 冀州市| 崇仁县| 定结县| 广宗县| 凤阳县| 浪卡子县| 沧源| 栾川县| 疏勒县| 赤壁市| 衡南县| 隆昌县| 那坡县| 读书| 车险| 天峻县| 旺苍县| 揭西县| 隆安县| 通城县| 朝阳市| 合阳县| 开阳县| 仙居县| 容城县| 永川市| 潮安县| 南安市| 泸西县| 江源县| 钟山县| 和田市| 陵川县|