寫在最前面java
因爲Java面向對象編程的特性, 在命名時應儘可能選擇名詞。在命名的時候,最經常使用的就是駝峯命名法(Camel-Case): 當變量名或函式名是由一個或多個單字連結在一塊兒,而構成的惟一識別字時,首字母以小寫開頭,每一個單詞首字母大寫(第一個單詞除外)。web
1、包名的書寫規範(Package)算法
推薦使用公司或機構的頂級域名爲包名的前綴,目的是保證各公司/機構內所使用的包名的惟一性。包名所有爲小寫字母,且具備實際的區分意義。數據庫
1.1 通常要求編程
一、選擇有意義的名字,能快速地傳達該類的用途。數組
二、全部包的命名必須採用小寫英文字母。jsp
1.2 實際應用函數
應用系統中常常應用分層,Dao層(數據庫訪問)、Service層(業務處理)、Web層(頁面控制action類)。網站
一、包名的前幾個爲固定名稱, 若是是網站的話,採用網站的域名的反寫,若是域名尚未肯定的話,採用公司固定的幾個名稱。如:net.vschoolspa
二、在包名的接下來一個單詞爲模塊的名稱。如:用戶模塊,包名爲net.vschool.user
三、關於模塊的訪問操做,採用分層形式,通常分爲:
Dao層操做:通常定義在net.vschool.xxx.dao中,其中xxx爲模塊名稱。
Service層操做:通常定義在net.vschool.xxx.servie中。
web層操做:通常定義在net.vschool.xxx.action中。
1.3 以下關於用戶模塊的例子:
net.vschool.user
net.vschool.user.dao
net.vschool.user.action
net.vschool.user.service
2、類名的書寫規範 (Class)
類名必須使用名詞,若是一個類名內含多個單詞,那麼各個單詞第一個字母大寫,後續字母小寫,起伏呈駝峯狀,人稱駝峯式命名。給類名命名時,必須保證準確、簡潔且容易理解。儘可能使用完整單詞,避免使用縮寫詞(除了你們公認的)
2.1 通常要求
一、選擇有意義的名字,能快速地傳達該類的用途。
二、參照java駝峯命名法,類名的首字母必須採用大寫的形式,若是類名爲多詞組合而成的話,那麼每一個詞的首字母必須採用大寫。如:StudentAnswer.java
三、當要區別接口類和實現類的時候,能夠在類的後面加上「Impl」。 如:接口類:UserInterface.java 接口實現類:UserInterfaceImpl
四、推薦實體類沒有後綴名。
2.2 實際應用
應用系統中常常應用分層,Dao層(數據庫訪問)、Service層(業務處理)、Web層(頁面控制action類),每一層的類的名稱儘可能帶上該層後綴。
一、Dao層
a、接口類:採用JavaBean+Interface+Dao的形式來定義,即,實體對象+Interface+Dao。 如:用戶對象接口類:UserInterfaceDao,其中xxx爲模塊名稱。
b、實現類:採用JavaBean+Interface+Impl+Dao的形式來定義,即,實體對象 +Interface+Impl+Dao。如:用戶對象實現類:UserInterfaceImplDao
二、Service層
a、接口類:採用Xxx+Interface+Service的形式來定義,即,模塊+Interface+Service。 如:用戶管理接口類:UserMsgInterfaceServiec
b、實現類:採用Xxx+Interface+Impl+Service的形式來定義,即,模塊+Interface+Impl+Service。如:用戶管理實現類:UserMsgInterfaceImplServiec
三、Web層(action類)
a、實現類:採用縣Xxx+Operator+Action的形式來定義,即,模塊+操做+Action。如:用戶模塊User+刪除操做Delete+Action = UserDeleteAction
3、方法的命名
3.1 通常要求
一、選擇有意義的名字,能快速地傳達該方法的用途。
二、參照java駝峯命名法,首字母以小寫開頭,每一個單詞首字母大寫(第一個單詞除外)。
3.2 實際應用
一、方法表示一種行爲,它表明一種動做,最好是一個動詞或者動詞詞組或者第一個單詞爲一個動詞。
二、屬性方法:以get/set開頭,其後跟字段名稱,字段名稱首字母大寫。如:getUserName()
三、數據層方法:只能以insert(插入),delete(刪除),update(更新),select(查找),count(統計)開頭,其餘層方法避免以這個5個單詞開頭,以避免形成誤解。
四、服務層方法,根據方法的行爲命名,只描述方法的意義,而不採用方法的目的命名。好比系統的添加新用戶,用戶能夠前臺註冊,也能夠管理員後臺添加,方法會被重用,因此最好不要用使用register,採用add會更好寫。避免使用與web層相關的方法。
五、Web層方法最好是貼近web的語言,如register,login,logout等方法。
4、變量的命名
4.1 普通變量
4.1.1 通常要求
一、選擇有意義的名字,能快速地傳達該變量的用途。
二、參照java駝峯命名法,首字母以小寫開頭,每一個單詞首字母大寫(第一個單詞除外)。
4.1.2 實際應用
一、變量命名採用基本結構爲typeVariableName,使用3字符前綴來表示數據類型。
數據類型或對象類型 |
變量前綴 |
備註 |
byte |
bye |
一、作數組用時,再加前綴-a,如字符串數組:astr, 二、自定義類型的變量能夠採用自己的名稱,把首字母改成小寫。 三、採用名稱要能表明在方法中的意義。若是員工列表:employeeList |
char |
chr |
|
float |
flt |
|
boolean |
bln |
|
Integer/int |
int |
|
short |
sht |
|
Long/long |
lng |
|
Double/double |
dbl |
|
string |
str |
例如,定義一個整形變量:intDocCount,其中int代表數據類型,後面爲表意的英文名,每一個單詞首字母大寫。
二、變量使用技巧:
a、在一段函數中不使用同一個變量表示先後意義不一樣的兩個數值。
b、除非是在循環中,不然通常不推薦使用單個字母做爲變量名,i、j、k等只做爲小型循環的循環索引變量。
c、避免用Flag來命名狀態變量。
d、用Is來命名邏輯變量,如:blnFileIsFound。經過這種給布爾變量確定形式的命名方式,使得其它開發人員可以更爲清楚的理解布爾變量所表明的意義。
e、若是須要對變量名進行縮寫時,必定要注意整個代碼中縮寫規則的一致性。例如,若是在代碼的某些區域中使用intCnt,而在另外一些區域中又使用intCount,就會給代碼增長沒必要要的複雜性。建議變量名中儘可能不要出現縮寫。
4.2 靜態變量
一、選擇有意義的名字,能快速地傳達該變量的用途。
二、參照java駝峯命名法,採用所有大寫的形式來書寫,對於採用多詞合成的變量採用「_」來鏈接各單詞。如:USER_SIZE
5、Jsp頁面名稱的書寫規範
1. 所有采用小寫的英文字符和」_ 」組成。
2. 總體採用模塊名+操做的形式。如:user_view.jsp
3. Jsp頁面儘量與action的意思對應,如UserListAction對應者user_list.jsp
6、註釋的書寫規範(Javadoc)
原則:一、註釋形式統一在整個應用程序中,使用具備一致的標點和結構的樣式來構造註釋。二、註釋內容準確簡潔內容要簡單、明瞭、含義準確,防止註釋的多義性,錯誤的註釋不但無益反而有害。
一、基本註釋(必須加)(a) 類(接口)的註釋(b) 構造函數的註釋(c) 方法的註釋(d) 全局變量的註釋(e) 字段/屬性的註釋 備註:簡單的代碼作簡單註釋,註釋內容不大於10個字便可,另外,持久化對象或VO對象的getter、setter方法不需加註釋。
二、特殊必加註釋(必須加)(a) 典型算法必須有註釋。(b) 在代碼不明晰處必須有註釋。(c) 在代碼修改處加上修改標識的註釋。(d) 在循環和邏輯分支組成的代碼中加註釋。(e) 爲他人提供的接口必須加詳細註釋。
註釋格式:
一、單行(single-line)註釋:「//……」
二、塊(block)註釋:「/*……*/」
三、文檔註釋:「/**……*/」
四、javadoc註釋標籤語法
@author 對類的說明標明開發該類模塊的做者
@version 對類的說明標明該類模塊的版本
@see 對類、屬性、方法的說明參考轉向,也就是相關主題
@param 對方法的說明對方法中某參數的說明
@return 對方法的說明對方法返回值的說明
@exception 對方法的說明對方法可能拋出的異常進行說明。
方法註釋:
例如:
public class Test extends Button { /** * 爲按鈕添加顏色 * @param color 按鈕的顏色 * @return * @exception (方法有異常的話加) * @author Administrator * @Time 2016-11-20 15:02:29 */ public voidaddColor(String color){ …… } }
全局變量註釋:(參考String的註釋方式)
例如:
public final class String implements Java.io.Serializable, Comparable<String>,CharSequence { /** The value is used for characterstorage. */ private final char value[]; /** The offset is the first index of thestorage that is used. */ private final int offset; /** The count is the number of charactersin the String. */ private final int count; /** Cache the hash code for the string */ private int hash; // Default to 0…… }
字段/屬性註釋:
例如:
public class EmailBody implements Serializable{ private String id; private String senderName;//發送人姓名 private String title;//不能超過120箇中文字符 private String content;//郵件正文 private String attach;//附件,若是有的話 private String totalCount;//總髮送人數 private String successCount;//成功發送的人數 private Integer isDelete;//0不刪除 1刪除 private Date createTime;//目前不支持定時因此建立後即刻發送 privateSet<EmailList>EmailList; …… }