Java代碼風格

1. 類名

類名採用大駝峯的命名形式,所謂大駝峯就是首字母大寫,例如UpperCameCase。

抽象類命名使用 Abstract 或 Base 開頭;異常類使用 Exception 結尾;測試類命名以測試的類名開始,以 Test 結尾。

枚舉類名帶上 Enum 作爲後綴,枚舉成員名稱需要大寫,單詞間用下畫線隔開。

2. 包名

包名統一使用小寫,點分隔符之間有且僅有一個自然語義的英語單詞。一般單詞使用單數形式,但是類名如果有複數含義的話,則可以使用複數形式。

3. 變量

變量可分爲不可變量(常量)可變變量

(1). 常量

在 Java 中,常量一般指 final 關鍵字修飾的變量。

1、全局常量類內常量的命名採用字母全部大寫,單詞之間加下畫線的方式。

所謂全局常量指的是類的公開靜態屬性,使用 public static final 修飾;類內常量指的是私有靜態屬性,使用 private static final 修飾。

2、局部常量則採用小駝峯的形式。所謂局部常量指的是方法內的常量。

例子展示(代碼片可以左右移動):

 1public class Constant {
 2    //全局常量
 3    public static final String MY_NAME = "shuaidi";
 4    //類內常量
 5    private static final String MY_SEX = "男";
 6
 7    public void tt(){
 8        //局部常量
 9        final String myName = "shuaidi";
10    }
11}

(2). 可變變量

可變變量一般常用小駝峯的命名形式,如 myName ,小駝峯和大駝峯的區別就是,小駝峯首字母小寫,而大駝峯首字母大寫。不過需要注意的是,針對布爾類型的變量,在命名的時候,不要用 is 做前綴,否則部分框架在解析的時候會引起序列化錯誤。

例如標識是否刪除的成員變量 Boolean isDeleted, 它的 getter 方法也是 isDeleted(),框架在反向解析的時候,會誤認爲對應的屬性名稱爲 deleted,從而引起錯誤。

4. 空格

我發現很多人在寫代碼的時候,在運算符、賦值、參數等之間很少使用空格來隔開各種元素之間的距離,例如

 1//錯誤例子示範,注:裏面的代碼之間沒啥聯繫,都是隨意給出的。
 2int a=1
 3int b=a==1?1:2;
 4if(a==1&&b==2){
 5    print(a,b);//調用打印函數
 6}else{
 7
 8}
 9public static void print(int a,int b){
10    System.out.printf(a+b);
11}

像上面的這個例子中,就是幾乎沒用到空格的,代碼看起來很緊,反正我看起來是很不舒服,特別的當代碼很多的時候。

下面是我給的關於加空格的幾點建議:

1、二目、三目運算符的左右兩邊都應該加一個空格。

2、註釋的雙斜線與註釋內容之間有且僅有一個空格。

3、方法參數在定義和傳入參數時,多個參數逗號後邊都應該加空格。

4、如果大括號爲空,則簡潔地寫成{}即可,大括號中間無須換行和加空格。

5、左右小括號與括號內部的相鄰字符之間不要出現空格。

6、左大括號前需要加空格。

所以,修改後如下:

1int a = 1;
2int b = a == 1 ? 1 : 2;
3if(a == 1 && b == 2) {
4    print(a, b);
5} else {}
6
7public static void print(int a, int b) {
8    System.out.printf(a + b);// 調用打印函數
9}

這樣看起來舒服多了,特別是在括號內參數多的時候。

5. 控制語句

控制語句可以說是最容易出現 bug 的地方,所以代碼風格的約束極爲重要,而不是天馬行空地亂跳。因此,控制語句必須遵循如下約定:

1、在 if, for, while, do-while 等語句中必須使用大括號,即使只有一行代碼,也應該加上大括號。例如:

1int sum = 0;
2for(int i = 0; i < 10; i++) {
3    sum += i;// 儘管只有一行/
4}

2、在條件表達式中不允許出現賦值操作,也不允許在判斷表達式中出現複雜的所及組合。例如:

1//複雜的多級組合
2if((file.open(fileName, "w") != null) && (...) && (...)) {
3    dosomething();
4}

爭取的做法應該是將複雜的多級運算賦值給一個具有業務含義的布爾變量。例如:

1boolean existed = (file.open(fileName, "w") != null) && (...) && (...);
2
3if(existed) {
4    dosomething();
5
6}

3、多層嵌套不能超過三層。

6. 關於縮進與空格

一個縮進的距離等於四個空格的距離,但究竟是要使用 Tab 縮進來調距離還是用四個空格代替一個縮進來調距離,這個貌似存在爭議,有些大佬建議用 Tab 鍵,有些大佬建議用空格。我在《碼出高效Java開發手冊》裏,本書的作者是推薦四個空格縮進,禁止使用Tab鍵。

當然,你在使用IDE的時候,當你換行時,很多編輯器是會幫你自動縮進的,大多數IDE都是默認四個空格來縮進。

不過很多 IDE 工具提供了 Tab 鍵與空格之間的快速轉換設置。例如對於 IDEA 這個工具,要設置 Tab 鍵爲四個空格時,可以在設置那裏勾選 Use tab character(setting->editor->Code Style->選擇你想編輯的語言);而在 Eclipse 中,就得勾選 Insert spaces for tabs。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章