求求你規範下你的程式碼風格

苦逼的碼農發表於2019-01-24

求求你規範下你的程式碼風格


本文字數:2500字

閱讀本文大概需要:7 分鐘

程式碼風格並不影響程式的執行,也不會給你的程式帶來潛在的危險。但一段好的程式碼風格,能讓人閱讀起來特別舒服,特別的閱讀別人程式碼的時候,有些人的程式碼可以說是完全不注意空格、縮排、大小寫的,看起來特別不舒服。

給人好的印象,從一段程式碼風格開始。今天我總結了幾個最常用到的程式碼規範、可以說你每時每刻都會接觸到的了,也比較簡單,如果你平時沒有按這些規範寫的話,建議慢慢改過來。

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);
5else {}
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。

上面講的這幾點,可以說是無時無刻都在和他們打交道的了,其他比較少接觸的我就不列出來了。你平時有木按照這種風格來寫呢?

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31561266/viewspace-2564680/,如需轉載,請註明出處,否則將追究法律責任。

相關文章