1. 【強制】大括號的使用約定。如果是大括號內為空,則簡潔地寫成{}即可,不需要換行;如果是非空代碼塊則: 1) 左大括號前不換行。
2) 左大括號后換行。
3) 右大括號前換行。
4) 右大括號后還有else等代碼則不換行;表示終止的右大括號后必須換行。
1. 【強制】 左小括號和字符之間不出現空格;同樣,右小括號和字符之間也不出現空格。詳見第5條下方正例提示。
空格
a == b
空格
反例:if ()
1. 【強制】if/for/while/switch/do等保留字與括號之間都必須加空格。
2. 【強制】任何二目、三目運算符的左右兩邊都需要加一個空格。
說明:運算符包括賦值運算符=、邏輯運算符&&、加減乘除符號等。
1. 【強制】采用4個空格縮進,禁止使用tab字符。
說明:如果使用tab縮進,必須設置1個tab為4個空格。IDEA設置tab為4個空格時,請勿勾選Use tab character;而在eclipse中,必須勾選insert spaces for tabs。
#### 正例: (涉及1-5點)
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. 【強制】注釋的雙斜線與注釋內容之間有且僅有一個空格。
正例:// 注釋內容,注意在//和注釋內容之間有一個空格。
1. 【強制】單行字符數限制不超過 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);
1. 【強制】方法參數在定義和傳入時,多個參數逗號后邊必須加空格。
正例:下例中實參的"a",后邊必須要有一個空格。
method("a", "b", "c");
1. 【強制】IDE的text file encoding設置為UTF-8; IDE中文件的換行符使用Unix格式,不要使用Windows格式。
2. 【推薦】沒有必要增加若干空格來使某一行的字符與上一行對應位置的字符對齊。
#### 正例:
int a = 3;
long b = 4L;
float c = 5F;
StringBuffer sb = new StringBuffer();
說明:增加sb這個變量,如果需要對齊,則給a、b、c都要增加幾個空格,在變量比較多的情況下,是一種累贅的事情。
11\. 【推薦】方法體內的執行語句組、變量的定義語句組、不同的業務邏輯之間或者不同的語義之間插入一個空行。相同業務邏輯和語義之間不需要插入空行。
說明:沒有必要插入多個空行進行隔開。
- 一、編程規約????1
- (一) 命名風格????1
- (二) 常量定義????3
- (三) 代碼格式????4
- (四) OOP規約????6
- (五) 集合處理????9
- (六) 并發處理????12
- (七) 控制語句????14
- (八) 注釋規約????16
- (九) 其它????17
- 二、異常日志????18
- (一) 異常處理????18
- (二) 日志規約????19
- 三、單元測試????21
- 四、安全規約????23
- 五、MySQL數據庫????24
- (一) 建表規約????24
- (二) 索引規約????25
- (三) SQL語句????27
- (四) ORM映射????28
- 六、工程結構????30
- (一) 應用分層????30
- (二) 二方庫依賴????31
- (三) 服務器????32
- 附1:版本歷史????34
- 附2:本手冊專有名詞????35