命名規范
命名規范命名規范
命名規范
本規范主要針對java開發制定的規范項目命名
項目命名項目命名
項目命名
?項目創建,名稱所有字母均小寫,組合方式為:
com.company.projectName.component.hiberarchy。
1. projectName:項目名稱
2. component:模塊名稱
3. hiberarchy:開發層次名稱
例如:
com.company.tims.exchange.dao 類文件夾命名
------------------------------------------
類命名規范
基本命名規范:
類命名
命名規范:以大寫字母開頭,如果有多個單詞,每個單詞頭字母大寫
例如:UserInfo
接口命名
命名規范:以大寫字母"I"開頭,如果有多個單詞,每個單詞頭字母大寫
例如:IStudentInfo
接口實現類命名:
命名規范:將實現的接口名稱的首字母"I"去掉,以"Impl作為結尾",如果有多個單詞,每個單
詞頭字母大寫。
例如:StudentInfoImpl
------------------------------------------
J2EE+SSH框架命名規范
servlet類命名:
命名規范:以Servlet單詞結尾
例如:LoginServlet
POJO命名:
使用hibernate自動生成的類即可
DAO類命名:
使用hibernate自動生成的類即可
Action類命名:
命名規范:Action的命名以POJO名稱來制定,POJO名稱Action
例如:
一個POJO名稱為Diary,其對應的action為DiaryAction
ActionForm類命名:
命名規范:ActionForm的命名以POJO名稱來制定,POJO名稱Form
例如:
一個POJO名稱為Diary,其對應的actioForm為DiaryForm
業務邏輯接口命名:
命名規范:業務邏輯接口的命名以POJO名稱來制定,IPOJO名稱Service
例如:
一個POJO名稱為Diary,其對應的業務邏輯接口為IDiaryService
業務邏輯實現類命名:
命名規范:業務邏輯接口實現類的命名以POJO名稱來制定
例如:
一個POJO名稱為Diary,對應的業務邏輯接口實現類名為DiaryServiceImpl
------------------------------------------------
類變量命名:
命名規范:變量名首字母必須小寫,如果該變量名有多個單詞組成,后面的單 詞首字母大寫,
單詞與單詞之間不要使用"_"做連接,變量名訪問控制必須為私有, 可以對其增加setter與
getter方法。
例如:
private int studentAge;
public int getStudentAge(){
return studentAge;
}
public void setStudentAge(int studentAge) {
this.studentAge=studentAge;
}
常量命名:
命名規范:所有字母大寫,如果有多個單詞組成,單詞與單詞之間以” _“隔開。而且該變量
必須是公共、靜態、final類型
例如:public static final String USER_NAME=”userName“;
方法命名:
命名規范:首字母必須小寫,如果該變量名有多個單詞組成,后面的單詞首字母 大寫,單詞與
單詞之間不要使用"_"做連接。單詞不要使用名詞。
例如:public int checkLogin(String name,String pwd){}
--------------------------------------------------------
注釋規范:注釋規范是整個開發規范中最為重要的組成部分,必須嚴格執行。
類的注釋:
作用:注釋整個類,簡單概述該類作用。
書寫規范:類的注釋必須寫在該類的聲明語法之前。在注釋中要描述該類的基 本作用,作者,
日期,版本,公司名稱,版權聲明。
格式:
/* *?
* 類功能描述:(大致描述類的功能)?
* @author:編寫者名稱
*?
* @version: 類文件的版本號 從1.0開始(自己確定版本號的增改?
* 情況), 修改情況(修改時間、作者、改動情況)
*
* @see 包名.參考類名 (列出父類,引入類,每個類占一行),如果有
* 可省略?
* 相關數據如:(便于理解本類的一些常量數據及某些數據的格式?
* 或認為比較重要的數據,如果沒有可省略)?
*/?
類的聲明語法
例如:
/**
* <p>Title:管理員模塊數據處理類 </p>
* <p>Description: 兩個數相加</p>
* <p>Copyright: Copyright (c) 2007</p>
* <p>Company:華騰軟件公司</p>
*?
* @author 童金虎
*?
* @version $Revision: 1.7 $ $Date: 2007/07/08$?
*/
public class AdminDAO
?
變量、常量注釋:
作用:簡單描述該變量的意義。
書寫規范:變量注釋必須寫在變量定義之前,簡單描述其代表的意義。
格式:
/**?
* 變量功能描述:(大致描述變量的功能)
*/
例如:
/**
*定義年齡變量
*/
public int age;
方法注釋:
作用:對該方法功能簡單描述,其參數、返回值意義的注解。
書寫規范:方法注釋必須寫在方法定義之前。該注釋包括:方法其功能的簡單 描述,方法的參
數、返回值類型、返回值意義簡單的描述。
格式:
/**?
* 方法功能說明?
* @param args (參數類型可以寫在參數后,也可以省?
* 略。每個參數占一行)?
* @return 輸出參數(多種情況寫在同一行)?
* @see 類#參考方法 (與此方法有調用關系的方法供參?
* 考,不必每個方法都完整列出,要選擇有意義的,每個?
* 方法占一行)?
* @exception 異常處理類(方法中能夠引發的異常,每?
* 個異常占一行)?
*/
例如:
/**
* 修改管理員密碼
* @param adminId 管理員編號
* @param oldPassword 舊密碼
* @param password 新密碼
* @return boolean 是否編輯成功
* @throws UserException
* @throws ServiceException
*/
public booleaneditAdminPassword(int adminId,String oldPassword,
String password) throws UserException,ServiceException;
-----------------------------------------------------------
Jsp頁面命名:
命名規范:jsp頁面名稱要以小寫字母開頭,如果有多個單詞組成,后面的單詞以 大寫字母開
頭。名稱要體現出該頁面的意義,最好能夠與模塊名稱聯系在一起。
例如:
login.jsp --登錄頁面
register.jsp --注冊頁面
message.jsp --客戶留言頁面
------------------------------------------------------------
J2EE項目工程文件夾組織規范:
目的:規范學員web應用程序的資源組織形式,形成良好的文件組織習慣。文件的組織形式應當
體現模塊的劃分。
根據eclipse工具的特征,項目的目錄結構為:
src
----存放java文件
- WebRoot??
- |--images?--存放web程序所需的公共圖片??
- |--css?--存放web程序所需的公共樣式表??
- |--js?--存放web程序所需的公共js文件??
- |--commons?--存放web程序所需的公共文件??
- |--功能模塊文件夾(存放與某個功能模塊相關的資源)??
- ???|--images?--存放與該功能模塊相關的圖片??
- ???|--css?--存放與該模塊相關的樣式表文件??
- ???|--js?--存放與該模塊相關的js文件??
- |--jsp、html頁面??
- |--WEB-INF??
- ???|--classes??
- ???|--lib??
- ???|--tld文件??
?---------------------------------------------------------------
J2EE項目提交規范
項目完成時要將項目作為一個產品交付用戶,良好的項目組織規范可以使用戶可以方便的找尋
項目中需要的資源,同時也是一個公司專業性的體現。項目提交時,要按照下列文件格式進行
提交。
項目主文件夾:
作用:存放項目其他資源文件。
命名規范:時間_班級編號_第X小組。
例如:070706_GS2T18_第四小組。
項目主文件夾下面包括以下文件夾和文件:
|--src:保存.java文件。
|--database:保存數據庫的腳本文件或者數據庫備份文件。
|--source:保存eclipse工程中WebRoot目錄下的所有文件。
|--depend:保存編譯該程序必須依賴的其他jar文件。
|--javadoc:保存所有類生成的javadoc api文檔。
|--war:保存程序的歸檔文件
|--xx.war:已經打包好的工程文件,可以直接運行。
|--project:保存開發項目原工程代碼及文件。
|--產品說明書.doc:圖文方式展現該產品使用方法。
|--build.xml:ant腳本,用于生成運行的war文件。
|--項目解說.ppt:進行項目講解的ppt(ppt僅供在校模擬項目使用,不用于其他商業用途)
注:一個完整的項目中,數據庫必須有一定量的有效的測試數據來支持該程序的運行
------------------------------------------------------
包的命名
Java包的名字都是由小寫單詞組成。但是由于Java面向對象編程的特性,每一名Java程序員都
可以編寫屬于自己的Java包,為了保障每個 Java包命名的唯一性,在最新的Java編程規范中,
要求程序員在自己定義的包的名稱之前加上唯一的前綴。由于互聯網上的域名稱是不會重復的
,所以程序員一般采用自己在互聯網上的域名稱作為自己程序包的唯一前綴。?
例如: net.frontfree.javagroup
類的命名
類的名字必須由大寫字母開頭而單詞中的其他字母均為小寫;如果類名稱由多個單詞組成,則
每個單詞的首字母均應為大寫例如TestPage;如果類名稱中包含單詞縮寫,則這個所寫詞的每
個字母均應大寫,如:XMLExample,還有一點命名技巧就是由于類是設計用來代表對象的,所以
在命名類時應盡量選擇名詞。 ?
例如: Circle
方法的命名
方法的名字的第一個單詞應以小寫字母作為開頭,后面的單詞則用大寫字母開頭。?
例如: sendMessge
常量的命名
常量的名字應該都使用大寫字母,并且指出該常量完整含義。如果一個常量名稱由多個單詞組
成,則應該用下劃線來分割這些單詞。?
例如: MAX_VALUE
參數的命名
參數的命名規范和方法的命名規范相同,而且為了避免閱讀程序時造成迷惑,請在盡量保證參
數名稱為一個單詞的情況下使參數的命名盡可能明確。
Javadoc注釋
Java除了可以采用我們常見的注釋方式之外,Java語言規范還定義了一種特殊的注釋,也就是
我們所說的Javadoc注釋,它是用來記錄我們代碼中的API的。Javadoc注釋是一種多行注釋,以
/**開頭,而以*/結束,注釋可以包含一些HTML標記符和專門的關鍵詞。使用Javadoc 注釋的好
處是編寫的注釋可以被自動轉為在線文檔,省去了單獨編寫程序文檔的麻煩。?
例如:
/**?
* This is an example of?
* Javadoc?
*?
* @author darchon?
* @version 0.1, 10/11/2002?
*/
在每個程序的最開始部分,一般都用Javadoc注釋對程序的總體描述以及版權信息,之后在主程
序中可以為每個類、接口、方法、字段添加 Javadoc注釋,每個注釋的開頭部分先用一句話概
括該類、接口、方法、字段所完成的功能,這句話應單獨占據一行以突出其概括作用,在這句
話后面可以跟隨更加詳細的描述段落。在描述性段落之后還可以跟隨一些以Javadoc注釋標簽開
頭的特殊段落,例如上面例子中的@auther和@version,這些段落將在生成文檔中以特定方式顯
示。
變量和常量命名
變量命名的方法采用匈牙利命名法,基本結構為scope_typeVariableName,它使用3字符前綴來
表示數據類型,3個字符的前綴必須小寫,前綴后面是由表意性強的一個單詞或多個單詞組成的
名字,而且每個單詞的首寫字母大寫,其它字母小寫,這樣保證了對變量名能夠進行正確的斷
句。例如,定義一個整形變量,用來記錄文檔數量:intDocCount,其中int表明數據類型,后
面為表意的英文名,每個單詞首字母大寫。這樣,在一個變量名就可以反映出變量類型和變量
所存儲的值的意義兩方面內容,這使得代碼語句可讀性強、更加容易理解。byte、int、char、
long、float、 double、boolean和short。
變量類型和首字母對照關系如下表:
數據類型/對象類型 / 變量前綴 / 備注
byte bye?
char chr?
float flt?
boolean bln 做布爾變量時,使用bln?
Integer/int int?
String str?
Single sng?
short sht?
Long/long lng?
Double/double dbl?
Currency cur?
Variant bln astr obj vnt 做布爾變量用時,用bln,做字符串數組用時,用astr,做為對象
使用時,用obj,不確定時,用vnt。
對于數組,在數據類型的前綴前再增加一個a,例如字符串數組為astr。對于在多個函數內都要
使用的全局變量,在前面再增加“g_”。例如一個全局的字符串變量:g_strUserInfo。
在變量命名時要注意以下幾點:
· 選擇有意義的名字,注意每個單詞首字母要大寫。
· 在一段函數中不使用同一個變量表示前后意義不同的兩個數值。
· i、j、k等只作為小型循環的循環索引變量。
· 避免用Flag來命名狀態變量。
· 用Is來命名邏輯變量,如:blnFileIsFound。通過這種給布爾變量肯定形式的命名方式,使
得其它開發人員能夠更為清楚的理解布爾變量所代表的意義。
· 如果需要的話,在變量最后附加計算限定詞,如:curSalesSum。
· 命名不相包含,curSales和curSalesSum。
· Static Final 變量的名字應該都大寫,并且指出完整含義。
· 如果需要對變量名進行縮寫時,一定要注意整個代碼中縮寫規則的一致性。例如,如果在代
碼的某些區域中使用intCnt,而在另一些區域中又使用intCount,就會給代碼增加不必要的復
雜性。建議變量名中盡量不要出現縮寫。
· 通過在結尾處放置一個量詞,就可創建更加統一的變量,它們更容易理解,也更容易搜索。
例如,請使用 strCustomerFirst和strCustomerLast,而不要使用strFirstCustomer和
strLastCustomer。常用的量詞后綴有:First(一組變量中的第一個)、Last(一組變量中的
最后一個)、Next(一組變量中的下一個變量)、Prev(一組變量中的上一個)、Cur(一組變
量中的當前變量)。
· 為每個變量選擇最佳的數據類型,這樣即能減少對內存的需求量,加快代碼的執行速度,又
會降低出錯的可能性。用于變量的數據類型可能會影響該變量進行計算所產生的結果。在這種
情況下,編譯器不會產生運行期錯誤,它只是迫使該值符合數據類型的要求。這類問題極難查
找。
· 盡量縮小變量的作用域。如果變量的作用域大于它應有的范圍,變量可繼續存在,并且在不
再需要該變量后的很長時間內仍然占用資源。它們的主要問題是,任何類中的任何方法都能對
它們進行修改,并且很難跟蹤究竟是何處進行修改的。占用資源是作用域涉及的一個重要問題
。對變量來說,盡量縮小作用域將會對應用程序的可靠性產生巨大的影響。
關于常量的命名方法,在JAVA代碼中,無論什么時候,均提倡應用常量取代數字、固定字符串
。也就是說,程序中除0,1以外,盡量不應該出現其他數字。常量可以集中在程序開始部分定
義或者更寬的作用域內,名字應該都使用大寫字母,并且指出該常量完整含義。如果一個常量
名稱由多個單詞組成,則應該用下劃線“_”來分割這些單詞如:NUM_DAYS_IN_WEEK、
MAX_VALUE。
?
source代碼模塊 config配置文件模塊 test 測試模塊包命名
包命名包命名
包命名
規則o 全部小寫。o 標識符用點號分隔開來。為了使包的名字更易讀。如
com.leadal.shanty
?常用幾個包名o dao:數據層o service:邏輯層o model:持久類定義包 實現Serializable接
口,創建serialVersionUID 主鍵統一用id標識,Long類型o web:表示層及控制層o enums:枚
舉類型o config:配置文件類包o resource:資源文件包類文件命名
類文件命名類文件命名
類文件命名?
?
盡量以英文進行類定義 所有類都以大寫字母開頭 組合詞每個詞以大寫字母開頭,不用下劃線
或其他符號 避免使用單詞的縮寫,除非它的縮寫已經廣為人知,如HTTP變量命名
變量命名變量命名
變量命名?
?
第一個字母小寫,中間單詞的第一個字母大寫 不用_或&作為第一個字母。 盡量使用短而且具
有意義的單詞 單字符的變量名一般只用于生命期非常短暫的變量。i,j,k,m,n一般用于
integers;c,d,e一般用于characters
?如果變量是集合,則變量名應用復數。
String myName;
?
int[] students;
?
int i;
?
int n;
?
char c;
?
?
btNew;
?
(bt是Button的縮寫)
?
?常量命名
常量命名常量命名
常量命名?
?
所有常量名均全部大寫,單詞間以‘_’隔開
int MAX_NUM; 方法命名規則
方法命名規則方法命名規則
方法命名規則
規則o 第一個單詞一般是動詞。o 第一個字母是小些,但是中間單詞的第一個字母是大寫。o
如果方法返回一個成員變量的值,方法名一般為get+成員變量名,
如若返回的值是bool變量,一般以is作為前綴。o
?如果方法修改一個成員變量的值,方法名一般為:set + 成員變量
名。
?常用動詞o 獲取單個對象 loado 獲取列表 find listo 獲取分頁 pageo 搜索
searcho 保存 saveo 添加 add inserto 刪除 delete removeo 修改 updateDAO
DAODAO
DAO命名規則
命名規則命名規則
命名規則
接口類命名以DAO結尾 實現類類命名以DAOImpl結尾 結構參考如下: dao.dom4j
UserDAOImpl.hibernate.UserDAOImpl.UserDAO Service
ServiceService
Service命名規范
命名規范命名規范
命名規范
接口類命名以Service結尾 實現類類命名以ServiceImpl結尾 結構參考如下: service.impl
.UserServiceImpl.UserService Struts Action?
Struts Action Struts Action?
Struts Action 命名規范
命名規范命名規范
命名規范?
?
類命名與Action結尾 結構參考如下: web.struts.UserAction.GroupAction