paulwong

          轉(zhuǎn)一個(gè)J2EE開發(fā)時(shí)的包命名規(guī)則,養(yǎng)成良好的開發(fā)習(xí)慣

          代碼編寫規(guī)范目的:能夠在編碼過(guò)程中實(shí)現(xiàn)規(guī)范化,為以后的程序開發(fā)中養(yǎng)成良好的行為習(xí)慣。
          代碼編寫規(guī)范使用范圍:J2EE項(xiàng)目開發(fā)。
          包命名規(guī)范:
          目的:包的命名規(guī)范應(yīng)當(dāng)體現(xiàn)出項(xiàng)目資源良好的劃分

          servlet類所在包命名規(guī)范:公司名稱.開發(fā)組名稱.項(xiàng)目名稱.web.servlet
          例如:net.linkcn.web.servlet

          自定義標(biāo)簽類所在包命名規(guī)范:公司名稱.開發(fā)組名稱.項(xiàng)目名稱.web.tags
          例如:net.linkcn.web.tags

          過(guò)濾器類所在包命名規(guī)范:公司名稱.開發(fā)組名稱.項(xiàng)目名稱.web.filter
          例如:net.linkcn.web.filter

          Action類所在包命名規(guī)范:公司名稱.開發(fā)組名稱.項(xiàng)目名稱.web.struts.action
          例如:net.linkcn.web.struts.action

          ActionForm類所在包命名規(guī)范:公司名稱.開發(fā)組名稱.項(xiàng)目名稱.web.struts.form
          例如:net.linkcn.web.struts.form

          Javabean所在包命名規(guī)范:公司名稱.開發(fā)組名稱.項(xiàng)目名稱.web.struts.service.impl
          例如:net.linkcn.web.service.impl

          Javabean實(shí)現(xiàn)接口命名規(guī)范:公司名稱.開發(fā)組名稱.項(xiàng)目名稱.web.service
          例如:net.linkcn.web.service

          DAO類所在包命名規(guī)范:公司名稱.開發(fā)組名稱.項(xiàng)目名稱.dao.impl
          例如:net.linkcn.dao.impl

          DAO類所實(shí)現(xiàn)的接口在包中命名規(guī)范:公司名稱.開發(fā)組名稱.項(xiàng)目名稱.dao
          例如:net.linkcn.dao

          POJO類與hbm文件所在包命名規(guī)范:公司名稱.開發(fā)組名稱.項(xiàng)目名稱.dao.hbm
          例如:net.linkcn.dao.hbm

          全局公共類、接口類所在包命名規(guī)范:公司名稱.開發(fā)組名稱.項(xiàng)目名稱.global
          例如:net.linkcn.global

          全局工具類所在包命名規(guī)范:公司名稱.開發(fā)組名稱.項(xiàng)目名稱.util
          例如:net.linkcn.util

          類命名規(guī)范
          基本命名規(guī)范:

          類、接口命名

          命名規(guī)范:以大寫字母開頭,如果有多個(gè)單詞,每個(gè)單詞頭字母大寫
          例如:StudentInfo
          接口命名

          命名規(guī)范:以大寫字母"I"開頭,如果有多個(gè)單詞,每個(gè)單詞頭字母大寫
          例如:IStudentInfo

          接口實(shí)現(xiàn)類命名:
          命名規(guī)范:將實(shí)現(xiàn)的接口名稱的首字母"I"去掉,以"Impl作為結(jié)尾",如果有多個(gè)單詞,每個(gè)單詞頭字母大寫。
          例如:StudentInfoImpl

          J2EE+SSH框架命名規(guī)范
          servlet類命名:
          命名規(guī)范:以Servlet單詞結(jié)尾
          例如:LoginServlet

          POJO命名:
          使用hibernate自動(dòng)生成的類即可

          DAO類命名:
          使用hibernate自動(dòng)生成的類即可

          Action類命名:
          命名規(guī)范:Action的命名以POJO名稱來(lái)制定,POJO名稱Action
          例如:
          一個(gè)POJO名稱為Diary,其對(duì)應(yīng)的action為DiaryAction

          ActionForm類命名:
          命名規(guī)范:ActionForm的命名以POJO名稱來(lái)制定,POJO名稱Form
          例如:
          一個(gè)POJO名稱為Diary,其對(duì)應(yīng)的actioForm為DiaryForm

          業(yè)務(wù)邏輯接口命名:
          命名規(guī)范:業(yè)務(wù)邏輯接口的命名以POJO名稱來(lái)制定,IPOJO名稱Service
          例如:
          一個(gè)POJO名稱為Diary,其對(duì)應(yīng)的業(yè)務(wù)邏輯接口為IDiaryService

          業(yè)務(wù)邏輯實(shí)現(xiàn)類命名:
          命名規(guī)范:業(yè)務(wù)邏輯接口實(shí)現(xiàn)類的命名以POJO名稱來(lái)制定
          例如:
          一個(gè)POJO名稱為Diary,對(duì)應(yīng)的業(yè)務(wù)邏輯接口實(shí)現(xiàn)類名為DiaryServiceImpl

          類變量命名:
          命名規(guī)范:變量名首字母必須小寫,如果該變量名有多個(gè)單詞組成,后面的單 詞首字母大寫,單詞與單詞之間不要使用"_"做連接,變量名訪問(wèn)控制必須為私有, 可以對(duì)其增加setter與getter方法。
          例如:
          private int studentAge;
          public int getStudentAge(){
          return studentAge;
          }
          public void setStudentAge(int studentAge) {
          this.studentAge=studentAge;
          }

          常量命名:
          命名規(guī)范:所有字母大寫,如果有多個(gè)單詞組成,單詞與單詞之間以” _“隔開。而 且該變量必須是公共、靜態(tài)、final類型
          例如:public static final String USER_NAME=”userName“;

          方法命名
          命名規(guī)范:首字母必須小寫,如果該變量名有多個(gè)單詞組成,后面的單詞首字母 大寫,單詞與單詞之間不要使用"_"做連接。單詞不要使用名詞。
          例如:public int checkLogin(String name,String pwd){}

          注釋規(guī)范:注釋規(guī)范是整個(gè)開發(fā)規(guī)范中最為重要的組成部分,必須嚴(yán)格執(zhí)行。

          類的注釋:
          作用:注釋整個(gè)類,簡(jiǎn)單概述該類作用。
          書寫規(guī)范:類的注釋必須寫在該類的聲明語(yǔ)法之前。在注釋中要描述該類的基 本作用,作者,日期,版本,公司名稱,版權(quán)聲明。
          格式:

          類的聲明語(yǔ)法

          例如:

          public class AdminDAO

          變量、常量注釋:
          作用:簡(jiǎn)單描述該變量的意義。
          書寫規(guī)范:變量注釋必須寫在變量定義之前,簡(jiǎn)單描述其代表的意義。
          格式:


          例如:


          public int age;
          方法注釋:
          作用:對(duì)該方法功能簡(jiǎn)單描述,其參數(shù)、返回值意義的注解。
          書寫規(guī)范:方法注釋必須寫在方法定義之前。該注釋包括:方法其功能的簡(jiǎn)單 描述,方法的參數(shù)、返回值類型、返回值意義簡(jiǎn)單的描述。
          格式:


          例如:

          public booleaneditAdminPassword(int adminId,String oldPassword,
          String password) throws UserException,ServiceException;

          Jsp頁(yè)面命名:
          命名規(guī)范:jsp頁(yè)面名稱要以小寫字母開頭,如果有多個(gè)單詞組成,后面的單詞以 大寫字母開頭。名稱要體現(xiàn)出該頁(yè)面的意義,最好能夠與模塊名稱聯(lián)系在一起。
          例如:
          login.jsp --登錄頁(yè)面
          register.jsp --注冊(cè)頁(yè)面
          message.jsp --客戶留言頁(yè)面

          J2EE項(xiàng)目工程文件夾組織規(guī)范:
          目的:規(guī)范學(xué)員web應(yīng)用程序的資源組織形式,形成良好的文件組織習(xí)慣。文件的組織形式應(yīng)當(dāng)體現(xiàn)模塊的劃分。

          根據(jù)eclipse工具的特征,項(xiàng)目的目錄結(jié)構(gòu)為:
          src
          ----存放java文件
          WebRoot
          |--images --存放web程序所需的公共圖片
          |--css --存放web程序所需的公共樣式表
          |--js --存放web程序所需的公共js文件
          |--commons --存放web程序所需的公共文件
          |--功能模塊文件夾(存放與某個(gè)功能模塊相關(guān)的資源)
          |--images --存放與該功能模塊相關(guān)的圖片
          |--css --存放與該模塊相關(guān)的樣式表文件
          |--js --存放與該模塊相關(guān)的js文件
          |--jsp、html頁(yè)面
          |--WEB-INF
          |--classes
          |--lib
          |--tld文件

          J2EE項(xiàng)目提交規(guī)范
          項(xiàng)目完成時(shí)要將項(xiàng)目作為一個(gè)產(chǎn)品交付用戶,良好的項(xiàng)目組織規(guī)范可以使用戶可以方便的找尋項(xiàng)目中需要的資源,同時(shí)也是一個(gè)公司專業(yè)性的體現(xiàn)。項(xiàng)目提交時(shí),要按照下列文件格式進(jìn)行提交。

          項(xiàng)目主文件夾:
          作用:存放項(xiàng)目其他資源文件。
          命名規(guī)范:時(shí)間_班級(jí)編號(hào)_第X小組。
          例如:070706_GS2T18_第四小組。
          項(xiàng)目主文件夾下面包括以下文件夾和文件:
          |--src:保存.java文件。
          |--database:保存數(shù)據(jù)庫(kù)的腳本文件或者數(shù)據(jù)庫(kù)備份文件。
          |--source:保存eclipse工程中WebRoot目錄下的所有文件。
          |--depend:保存編譯該程序必須依賴的其他jar文件。
          |--javadoc:保存所有類生成的javadoc api文檔。
          |--war:保存程序的歸檔文件
          |--xx.war:已經(jīng)打包好的工程文件,可以直接運(yùn)行。
          |--project:保存開發(fā)項(xiàng)目原工程代碼及文件。
          |--產(chǎn)品說(shuō)明書.doc:圖文方式展現(xiàn)該產(chǎn)品使用方法。
          |--build.xml:ant腳本,用于生成運(yùn)行的war文件。
          |--項(xiàng)目解說(shuō).ppt:進(jìn)行項(xiàng)目講解的ppt(ppt僅供在校模擬項(xiàng)目使用,不用于其他商業(yè)用途)
          注:一個(gè)完整的項(xiàng)目中,數(shù)據(jù)庫(kù)必須有一定量的有效的測(cè)試數(shù)據(jù)來(lái)支持該程序的運(yùn)行

          包的命名 
          Java包的名字都是由小寫單詞組成。但是由于Java面向?qū)ο缶幊痰奶匦裕恳幻鸍ava程序員都可以編寫屬于自己的Java包,為了保障每個(gè) Java包命名的唯一性,在最新的Java編程規(guī)范中,要求程序員在自己定義的包的名稱之前加上唯一的前綴。由于互聯(lián)網(wǎng)上的域名稱是不會(huì)重復(fù)的,所以程序 員一般采用自己在互聯(lián)網(wǎng)上的域名稱作為自己程序包的唯一前綴。
          例如: net.frontfree.javagroup

          類的命名
          類的名字必須由大寫字母開頭而單詞中的其他字母均為小寫;如果類名稱由多個(gè)單詞組成,則每個(gè)單詞的首字母均應(yīng)為大寫例如TestPage;如果類名 稱中包含單詞縮寫,則這個(gè)所寫詞的每個(gè)字母均應(yīng)大寫,如:XMLExample,還有一點(diǎn)命名技巧就是由于類是設(shè)計(jì)用來(lái)代表對(duì)象的,所以在命名類時(shí)應(yīng)盡量 選擇名詞。   
          例如: Circle

          方法的命名
          方法的名字的第一個(gè)單詞應(yīng)以小寫字母作為開頭,后面的單詞則用大寫字母開頭。
          例如: sendMessge

          常量的命名
          常量的名字應(yīng)該都使用大寫字母,并且指出該常量完整含義。如果一個(gè)常量名稱由多個(gè)單詞組成,則應(yīng)該用下劃線來(lái)分割這些單詞。
          例如: MAX_VALUE

          參數(shù)的命名
          參數(shù)的命名規(guī)范和方法的命名規(guī)范相同,而且為了避免閱讀程序時(shí)造成迷惑,請(qǐng)?jiān)诒M量保證參數(shù)名稱為一個(gè)單詞的情況下使參數(shù)的命名盡可能明確。

          Javadoc注釋
          Java除了可以采用我們常見的注釋方式之外,Java語(yǔ)言規(guī)范還定義了一種特殊的注釋,也就是我們所說(shuō)的Javadoc注釋,它是用來(lái)記錄我們代 碼中的API的。Javadoc注釋是一種多行注釋,以結(jié)束,注釋可以包含一些HTML標(biāo)記符和專門的關(guān)鍵詞。使用Javadoc 注釋的好處是編寫的注釋可以被自動(dòng)轉(zhuǎn)為在線文檔,省去了單獨(dú)編寫程序文檔的麻煩。
          例如:

          在每個(gè)程序的最開始部分,一般都用Javadoc注釋對(duì)程序的總體描述以及版權(quán)信息,之后在主程序中可以為每個(gè)類、接口、方法、字段添加 Javadoc注釋,每個(gè)注釋的開頭部分先用一句話概括該類、接口、方法、字段所完成的功能,這句話應(yīng)單獨(dú)占據(jù)一行以突出其概括作用,在這句話后面可以跟 隨更加詳細(xì)的描述段落。在描述性段落之后還可以跟隨一些以Javadoc注釋標(biāo)簽開頭的特殊段落,例如上面例子中的@auther和@version,這 些段落將在生成文檔中以特定方式顯示。

          變量和常量命名
          變量命名的方法采用匈牙利命名法,基本結(jié)構(gòu)為scope_typeVariableName,它使用3字符前綴來(lái)表示數(shù)據(jù)類型,3個(gè)字符的前綴必須 小寫,前綴后面是由表意性強(qiáng)的一個(gè)單詞或多個(gè)單詞組成的名字,而且每個(gè)單詞的首寫字母大寫,其它字母小寫,這樣保證了對(duì)變量名能夠進(jìn)行正確的斷句。例如, 定義一個(gè)整形變量,用來(lái)記錄文檔數(shù)量:intDocCount,其中int表明數(shù)據(jù)類型,后面為表意的英文名,每個(gè)單詞首字母大寫。這樣,在一個(gè)變量名就 可以反映出變量類型和變量所存儲(chǔ)的值的意義兩方面內(nèi)容,這使得代碼語(yǔ)句可讀性強(qiáng)、更加容易理解。byte、int、char、long、float、 double、boolean和short。
          變量類型和首字母對(duì)照關(guān)系如下表:
          數(shù)據(jù)類型/對(duì)象類型 / 變量前綴 / 備注
          byte bye
          char chr
          float flt
          boolean bln 做布爾變量時(shí),使用bln
          Integer/int int
          String str
          Single sng
          short sht
          Long/long lng
          Double/double dbl
          Currency cur
          Variant bln astr obj vnt 做布爾變量用時(shí),用bln,做字符串?dāng)?shù)組用時(shí),用astr,做為對(duì)象使用時(shí),用obj,不確定時(shí),用vnt。
          對(duì)于數(shù)組,在數(shù)據(jù)類型的前綴前再增加一個(gè)a,例如字符串?dāng)?shù)組為astr。對(duì)于在多個(gè)函數(shù)內(nèi)都要使用的全局變量,在前面再增加“g_”。例如一個(gè)全局的字符串變量:g_strUserInfo。

          在變量命名時(shí)要注意以下幾點(diǎn):
          · 選擇有意義的名字,注意每個(gè)單詞首字母要大寫。

          · 在一段函數(shù)中不使用同一個(gè)變量表示前后意義不同的兩個(gè)數(shù)值。

          · i、j、k等只作為小型循環(huán)的循環(huán)索引變量。

          · 避免用Flag來(lái)命名狀態(tài)變量。

          · 用Is來(lái)命名邏輯變量,如:blnFileIsFound。通過(guò)這種給布爾變量肯定形式的命名方式,使得其它開發(fā)人員能夠更為清楚
          的理解布爾變量所代表的意義。

          · 如果需要的話,在變量最后附加計(jì)算限定詞,如:curSalesSum。

          · 命名不相包含,curSales和curSalesSum。

          · Static Final 變量的名字應(yīng)該都大寫,并且指出完整含義。

          · 如果需要對(duì)變量名進(jìn)行縮寫時(shí),一定要注意整個(gè)代碼中縮寫規(guī)則的一致性。例如,如果在代碼的某些區(qū)域中使用intCnt,而在另一些區(qū)域中又使用intCount,就會(huì)給代碼增加不必要的復(fù)雜性。建議變量名中盡量不要出現(xiàn)縮寫。

          · 通過(guò)在結(jié)尾處放置一個(gè)量詞,就可創(chuàng)建更加統(tǒng)一的變量,它們更容易理解,也更容易搜索。例如,請(qǐng)使用 strCustomerFirst和strCustomerLast,而不要使用strFirstCustomer和strLastCustomer。常 用的量詞后綴有:First(一組變量中的第一個(gè))、Last(一組變量中的最后一個(gè))、Next(一組變量中的下一個(gè)變量)、Prev(一組變量中的上 一個(gè))、Cur(一組變量中的當(dāng)前變量)。

          · 為每個(gè)變量選擇最佳的數(shù)據(jù)類型,這樣即能減少對(duì)內(nèi)存的需求量,加快代碼的執(zhí)行速度,又會(huì)降低出錯(cuò)的可能性。用于變量的數(shù)據(jù)類型可能會(huì)影響該變量進(jìn)行計(jì)算所產(chǎn)生的結(jié)果。在這種情況下,編譯器不會(huì)產(chǎn)生運(yùn)行期錯(cuò)誤,它只是迫使該值符合數(shù)據(jù)類型的要求。這類問(wèn)題極難查找。

          · 盡量縮小變量的作用域。如果變量的作用域大于它應(yīng)有的范圍,變量可繼續(xù)存在,并且在不再需要該變量后的很長(zhǎng)時(shí)間內(nèi)仍然占用資源。它們的主要問(wèn)題是,任何類 中的任何方法都能對(duì)它們進(jìn)行修改,并且很難跟蹤究竟是何處進(jìn)行修改的。占用資源是作用域涉及的一個(gè)重要問(wèn)題。對(duì)變量來(lái)說(shuō),盡量縮小作用域?qū)?huì)對(duì)應(yīng)用程序的 可靠性產(chǎn)生巨大的影響。
          關(guān)于常量的命名方法,在JAVA代碼中,無(wú)論什么時(shí)候,均提倡應(yīng)用常量取代數(shù)字、固定字符串。也就是說(shuō),程序中除0,1以外,盡量不應(yīng)該出現(xiàn)其他數(shù) 字。常量可以集中在程序開始部分定義或者更寬的作用域內(nèi),名字應(yīng)該都使用大寫字母,并且指出該常量完整含義。如果一個(gè)常量名稱由多個(gè)單詞組成,則應(yīng)該用下 劃線“_”來(lái)分割這些單詞如:NUM_DAYS_IN_WEEK、MAX_VALUE。

          posted on 2012-04-15 18:53 paulwong 閱讀(4549) 評(píng)論(0)  編輯  收藏 所屬分類: J2SE

          主站蜘蛛池模板: 讷河市| 水城县| 高安市| 罗甸县| 高台县| 丹凤县| 西盟| 乐清市| 永福县| 社会| 镇巴县| 格尔木市| 苏尼特左旗| 略阳县| 雅安市| 社会| 新和县| 罗田县| 宝应县| 泾川县| 甘洛县| 佛冈县| 海口市| 石城县| 江孜县| 彰武县| 广南县| 翁牛特旗| 馆陶县| 金堂县| 德清县| 滕州市| 德庆县| 海城市| 威远县| 贡嘎县| 荥经县| 色达县| 新源县| 修文县| 宾阳县|