一個簡單的java應用程序
public class FirstSample {
public static void main(String[] args) {
System.out.println("Hello,World");
}
1
2
3
4
5
一、命名規約:
1.代碼中的命名均不能以下劃線或美元符號開始,也不能以下劃線或美元符號結束。
反例: _name __name ObjectnamenameObjectnamename Object$
2.代碼中的命名嚴禁使用拼音與英文混合的方式,不允許直接使用中文。
注意,即使純拼音命名方式也要避免採用。
反例: DaZhePromotion [打摺] / getPingfenByName() [評分] / int 某變量 = 3
正例: alibaba / taobao / youku / hangzhou 等國際通用的名稱,可視同英文。
3.類名使用UpperCamelCase風格,必須遵從駝峰形式,但以下情形例外:
(領域模型的相關命名)DO / BO / DTO / VO等。
正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion
反例:macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion
4.方法名、參數名、成員變量、局部變量都統一使用lowerCamelCase風格,必須
遵從駝峰形式。
正例: localValue / getHttpMessage() / inputUserId
常量命名全部大寫,單詞間用下劃線隔開,力求語義表達完整清楚,不要嫌名字
長。
正例: MAX_STOCK_COUNT
反例: MAX_COUNT
6.抽象類命名使用Abstract或Base開頭;異常類命名使用Exception結尾;測試類
命名以它要測試的類的名稱開始,以Test結尾。
7.中括號是數組類型的一部分,數組定義如下:String[] args;
反例:請勿使用String args[]的方式來定義。
8.包名統一使用小寫,點分隔符之間有且僅有一個自然語義的英語單詞。包名統一
使用單數形式,但是類名如果有複數含義,類名可以使用複數形式。
正例: 應用工具類包名為com.alibaba.open.util、類名為MessageUtils
9.接口類中的方法和屬性不要加任何脩飾符號(public 也不要加),保持代碼的簡
潔性,並加上有效的Javadoc注釋。盡量不要在接口裡定義變量,如果一定要定義變量,肯定是與接口方法相關,並且是整個應用的基礎常量。
正例:接口方法簽名:void f(); 接口基礎常量表示:String COMPANY = “alibaba”;
反例:接口方法定義:public abstract void f();
說明:JDK8中接口允許有默認實現,那麼這個default方法,是對所有實現類都有價
值的默認實現。
10.枚舉類名建議帶上Enum後綴,枚舉成員名稱需要全大寫,單詞間用下劃線隔開。
說明:枚舉其實就是特殊的常量類,且構造方法被默認強制是私有。
正例:枚舉名字:DealStatusEnum,成員名稱:SUCCESS / UNKOWN_REASON。
二、常量定義
1.不允許出現任何魔法值(即未經定義的常量)直接出現在代碼中。
反例: String key=”Id#taobao_”+tradeId;
cache.put(key, value);
2.long或者Long初始賦值時,必須使用大寫的L,不能是小寫的l,小寫容易跟數字1混淆,造成誤解。
說明:Long a = 2l; 寫的是數字的21,還是Long型的2?
3.如果變量值僅在一個範圍內變化用Enum類。如果還帶有名稱之外的延伸屬性,必須使用Enum類,下面正例中的數字就是延伸信息,表示星期幾。
正例:public Enum{ MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6), SUNDAY(7);}
三、格式規約
1.大括號的使用約定。如果是大括號內為空,則簡潔地寫成{}即可,不需要換行;如果是非空代碼塊則:
1) 左大括號前不換行。
2) 左大括號後換行。
3) 右大括號前換行。
4) 右大括號後還有else等代碼則不換行;表示終止右大括號後必須換行。
2.左括號和後一個字符之間不出現空格;同樣,右括號和前一個字符之間也不出現空格。
3.if/for/while/switch/do等保留字與左右括號之間都必須加空格。
4.任何運算符左右必須加一個空格。
說明:運算符包括賦值運算符=、邏輯運算符&&、加減乘除符號、三目運行符等。
5.縮進採用4個空格,不要使用tab字符。
public static void main(String args[]) {
// 縮進4個空格
String say = "hello";
// 運算符的左右必須有一個空格
int flag = 0;
// 關鍵詞if與括號之間必須有一個空格,括號內的f與左括號,0與右括號不需要空格
if (flag == 0) {
System.out.println(say);
// 左大括號前加空格且不換行;左大括號後換行
if (flag == 1) {
System.out.println("world");
// 右大括號前換行,右大括號後有else,不用換行
} else {
System.out.println("ok");
// 在右大括號後直接結束,則必須換行
6
7
8
9
10
11
12
13
14
15
16
17
18
6.單行字符數限不超過 120 個,超出需要換行時 個,超出需要換行時 遵循如下原則:
1) 第二行相對一縮進 4個空格,從第三行開始不再繼續縮進參考示例。
2) 運算符與下文一起換行。
3) 方法調用的點符號與下文一起換行。
4) 在多個參數超長,逗號後進行換行。
5) 在括號前不要換行,見反例。
正例:
StringBuffer sb = new StringBuffer();
//超過120個字符的情況下,換行縮進4個空格,並且方法前的點符號一起換行
sb.append(“zi”).append(“xin”)…
.append(“huang”)…
.append(“huang”);
反例:
//超過120個字符的情況下,不要在括號前換行
sb.append(“zi”).append(“xin”)…append
(“huang”);
//參數很多的方法調用可能超過120個字符,不要在逗號前換行
method(args1, args2, args3, …
, argsX);
7.方法參數在定義和傳入時,多個參數逗號後邊必須加空格。
正例:下例中實參的”a”,後邊必須要有一個空格。
method(“a”, “b”, “c”)
一個簡單的java應用程序
public class FirstSample {
public static void main(String[] args) {
System.out.println("Hello,World");
}
}
1
2
3
4
5
1
2
3
4
5
一、命名規約:
1.代碼中的命名均不能以下劃線或美元符號開始,也不能以下劃線或美元符號結束。
反例: _name __name ObjectnamenameObjectnamename Object$
2.代碼中的命名嚴禁使用拼音與英文混合的方式,不允許直接使用中文。
注意,即使純拼音命名方式也要避免採用。
反例: DaZhePromotion [打摺] / getPingfenByName() [評分] / int 某變量 = 3
正例: alibaba / taobao / youku / hangzhou 等國際通用的名稱,可視同英文。
3.類名使用UpperCamelCase風格,必須遵從駝峰形式,但以下情形例外:
(領域模型的相關命名)DO / BO / DTO / VO等。
正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion
反例:macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion
4.方法名、參數名、成員變量、局部變量都統一使用lowerCamelCase風格,必須
遵從駝峰形式。
正例: localValue / getHttpMessage() / inputUserId
常量命名全部大寫,單詞間用下劃線隔開,力求語義表達完整清楚,不要嫌名字
長。
正例: MAX_STOCK_COUNT
反例: MAX_COUNT
6.抽象類命名使用Abstract或Base開頭;異常類命名使用Exception結尾;測試類
命名以它要測試的類的名稱開始,以Test結尾。
7.中括號是數組類型的一部分,數組定義如下:String[] args;
反例:請勿使用String args[]的方式來定義。
8.包名統一使用小寫,點分隔符之間有且僅有一個自然語義的英語單詞。包名統一
使用單數形式,但是類名如果有複數含義,類名可以使用複數形式。
正例: 應用工具類包名為com.alibaba.open.util、類名為MessageUtils
9.接口類中的方法和屬性不要加任何脩飾符號(public 也不要加),保持代碼的簡
潔性,並加上有效的Javadoc注釋。盡量不要在接口裡定義變量,如果一定要定義變量,肯定是與接口方法相關,並且是整個應用的基礎常量。
正例:接口方法簽名:void f(); 接口基礎常量表示:String COMPANY = “alibaba”;
反例:接口方法定義:public abstract void f();
說明:JDK8中接口允許有默認實現,那麼這個default方法,是對所有實現類都有價
值的默認實現。
10.枚舉類名建議帶上Enum後綴,枚舉成員名稱需要全大寫,單詞間用下劃線隔開。
說明:枚舉其實就是特殊的常量類,且構造方法被默認強制是私有。
正例:枚舉名字:DealStatusEnum,成員名稱:SUCCESS / UNKOWN_REASON。
二、常量定義
1.不允許出現任何魔法值(即未經定義的常量)直接出現在代碼中。
反例: String key=”Id#taobao_”+tradeId;
cache.put(key, value);
2.long或者Long初始賦值時,必須使用大寫的L,不能是小寫的l,小寫容易跟數字1混淆,造成誤解。
說明:Long a = 2l; 寫的是數字的21,還是Long型的2?
3.如果變量值僅在一個範圍內變化用Enum類。如果還帶有名稱之外的延伸屬性,必須使用Enum類,下面正例中的數字就是延伸信息,表示星期幾。
正例:public Enum{ MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6), SUNDAY(7);}
三、格式規約
1.大括號的使用約定。如果是大括號內為空,則簡潔地寫成{}即可,不需要換行;如果是非空代碼塊則:
1) 左大括號前不換行。
2) 左大括號後換行。
3) 右大括號前換行。
4) 右大括號後還有else等代碼則不換行;表示終止右大括號後必須換行。
2.左括號和後一個字符之間不出現空格;同樣,右括號和前一個字符之間也不出現空格。
3.if/for/while/switch/do等保留字與左右括號之間都必須加空格。
4.任何運算符左右必須加一個空格。
說明:運算符包括賦值運算符=、邏輯運算符&&、加減乘除符號、三目運行符等。
5.縮進採用4個空格,不要使用tab字符。
public static void main(String args[]) {
// 縮進4個空格
String say = "hello";
// 運算符的左右必須有一個空格
int flag = 0;
// 關鍵詞if與括號之間必須有一個空格,括號內的f與左括號,0與右括號不需要空格
if (flag == 0) {
System.out.println(say);
}
// 左大括號前加空格且不換行;左大括號後換行
if (flag == 1) {
System.out.println("world");
// 右大括號前換行,右大括號後有else,不用換行
} else {
System.out.println("ok");
// 在右大括號後直接結束,則必須換行
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
6.單行字符數限不超過 120 個,超出需要換行時 個,超出需要換行時 遵循如下原則:
1) 第二行相對一縮進 4個空格,從第三行開始不再繼續縮進參考示例。
2) 運算符與下文一起換行。
3) 方法調用的點符號與下文一起換行。
4) 在多個參數超長,逗號後進行換行。
5) 在括號前不要換行,見反例。
正例:
StringBuffer sb = new StringBuffer();
//超過120個字符的情況下,換行縮進4個空格,並且方法前的點符號一起換行
sb.append(“zi”).append(“xin”)…
.append(“huang”)…
.append(“huang”)…
.append(“huang”);
反例:
StringBuffer sb = new StringBuffer();
//超過120個字符的情況下,不要在括號前換行
sb.append(“zi”).append(“xin”)…append
(“huang”);
//參數很多的方法調用可能超過120個字符,不要在逗號前換行
method(args1, args2, args3, …
, argsX);
7.方法參數在定義和傳入時,多個參數逗號後邊必須加空格。
正例:下例中實參的”a”,後邊必須要有一個空格。
method(“a”, “b”, “c”)