優秀Java程式設計師的程式設計風格

yang_best的專欄發表於2014-11-29

今天突發奇想,對編碼習慣和程式設計風格很感興趣,於是乎,找了一下關於程式設計風格(Java篇)的資料,希望對愛好編碼或者開始學習編碼的同學有幫助!

來自《The Elements of Java Style》-《Java程式設計風格》一書,值得一讀的書籍,會讓你在細節上節省很多時間,合作之間更加愉快!

好處不多說了,但是有幾個原則如下

1.保持原有風格

2.堅持最小驚奇原則

3.第一次就做對

4.記錄所有非規範行為

格式規範:

1.縮排巢狀的程式碼:在每個程式碼塊和巢狀中加入縮排,縮排程式碼,加強可讀性。這些地方包括【類定義,內部類定義,方法定義,靜態塊,for迴圈語句,if-else語句,try、catch和finally塊,匿名內部類,while語句,do-while語句】

2.斷開很長的句子:第一,如果包含了逗號,那麼在每一個逗號後面都另起一行,把逗號後面的每一個表示式都和逗號前面的表示式的第一個字母對齊。第二,應該在優先順序最低的運算子之前斷行。

3.使用空白:關鍵字和左括號之間,右括號和緊隨其後的關鍵字,除了”.”之外的運算子與其前後的表示式之間用空格隔開。每個邏輯上獨立的方法和程式碼段之間,定義類或者介面的成員之間,每個類和介面之間應該加入空白行。

4.不要直接使用Tab控制符:不同環境對Tab控制符的解釋也是不同的。

命名約定:

1.名稱應該具有實際意義

2.使用人們熟悉的名稱

3.謹慎使用過長的名字,可以使用簡明通用的縮寫

4.儘量保留母音字母

5.縮寫詞的第一個字母大寫

6.不要使用大小寫來區分的名字

包命名:

1.用你所在組織的域名的倒序小寫形式作為包的根限定詞

2.使用單獨的小寫詞作為每個包的根名

3.僅當新舊版本二進位制相容的時候,其包可以使用相同的名字,否則,請使用新名字

型別命名:

1.類和介面名中的每個單詞的第一個字母大寫

類命名:

1.用名詞命名類

2.具有成組相關屬性,靜態服務或者常量的類名字使用複數形式

介面命名:

1.用名詞或者形容詞命名介面

方法命名:

1.方法名中的第一個單詞小寫,其後每個單詞的第一個字母大寫

2.用動詞命名方法

3.遵循JavaBean中命名屬性訪問函式方法:set,get,is

變數命名:

1.變數命中的第一個單詞小寫,其後的每個單詞的第一個字母大寫

2.用名詞命名變數

3.集合引用名要用複數形式

4.為不重要的臨時變數簡歷並使用一套標準名字

欄位命名:

1.使用this欄位變數可以區分開區域性變數

引數命名:

1.建構函式或者”set”方法給欄位分配引數賦值,引數名應該和欄位名相同

常量命名:

1.常量的每個單詞均大寫,單詞之間使用下劃線連線

文件約定:

1.為使用和維護你的程式碼的人編寫文件

2.註釋和程式碼要同步

3.使用積極的語氣,省略無用的詞語

註釋型別:

1.用文件註釋來描述程式設計介面

2.用標準註釋格式隱藏程式碼而不必刪除它們

3.用單行註釋解釋實現細節

文件註釋:

1.在編寫程式碼前描述程式設計介面

2.為公用,受保護,包,私有成員建立文件

3.為每個包編寫總結和概述

4.為包的每個應用程式或組編寫概述

註釋風格:

1.對所有文件註釋使用統一的格式和組織結構

2.關鍵字,識別符號和常量應放到<code>…</code>標籤中

3.將程式碼放入<pre>…</pre>標籤中

4.在識別符號第一次出現的時候用{@link}標籤

5.為Javadoc標籤簡歷並使用一套固定的順序

6.使用第三人稱敘述的形式

7.編寫獨立的概述

8.省略概述中動作和服務的主語

9.省略事物概述中的物件和動詞

10.使用this而不是the來指代當前類中的例項

11.方法名或者建構函式名不需圓括號,除非你想突出一個特殊的簽名

註釋內容:

1.每個類、介面、欄位和方法都編寫概述

2.完整描述每個方法的簽名

3.包含示例

4.為前置、後置、不變條件編寫文件

5.為已知的缺陷和不足編寫文件

6.為同步語法編寫文件

內部註釋:

1.僅新增有助於理解你的程式碼的內部註釋

2.描寫程式碼為什麼這樣做,而不是在做什麼

3.避免使用行尾註釋

4.用行尾註釋解釋區域性變數宣告

5.建立並使用一套關鍵詞來標識尚未解決的問題

6.在巢狀程度高的控制結構中標記出巢狀結束位置

7.如果兩個case標記之間沒有break語句,就在中間加入“fall-through”註釋

8.標記空語句

程式設計約定:

1.將表示基礎資料型別的類宣告為final型別

2.通過本地型別和其他具體型別建立具體型別

3.定義小的類和小的方法

4.定義子類,以便任何使用超類的地方都可以使用子類

5.使所有欄位私有

6.使用多型來替代instanceof

型別安全:

1.以java.lang.Object包裝通用類,提供靜態型別檢查

2.以類的形式封裝列舉型別

3.儘量使用泛型

語句和表示式:

1.用等價的方法替換重複的、複雜的表示式

2.使用塊語句代替控制流結構的表示式

3.使用括號明確操作順序

4.在switch語句中的最後一個case體使用break語句

5.使用equals(),而不是==來檢測物件的對等關係

構造:

1.構造狀態有效的物件

2.不要從建構函式中呼叫非final方法

3.用巢狀的建構函式消除冗餘程式碼

異常處理:

1.使用不受檢查、執行時的異常來報告可能在程式邏輯中出錯的嚴重未查明錯誤

2.使用檢查異常來報告可能發生,而在正常的程式執行時極少發生的錯誤

3.用返回程式碼報告可預知的狀態改變

4.僅轉化異常來新增資訊

5.不要私自處置執行時或者錯誤異常

6.用finally語句塊釋放資源

斷言:

1.按照約定程式設計

2.用無用程式碼消除機制實現斷言

3.用斷言捕捉程式碼中的邏輯錯誤

4.用斷言檢測方法的前置條件和後置條件

併發:

1.僅在適當的地方使用執行緒

同步:

1.避免同步

2.用同步的包裝器,提供同步介面

3.如果方法包含幾個不需要同步的重要操作,那麼不要同步整個方法

4.讀寫例項變數的時候避免不必要的同步

5.使用notify()而不是notifyAll()

6.為同步初始化使用雙重檢查模式

效率:

1.使用懶惰初始化

2.避免建立不必要的物件

3.重新初始化並重新使用物件,儘量不要新建物件

4.把優化工作留在日後

打包約定:

1.將經常使用、更改、同時釋出或者互相依存的型別,放在同一個包裡

2.共同封閉原則

3.重用/釋出等價原則

4.無環依賴原則

5.將不穩定的類和介面隔離在單獨的包中

6.易於修改的包不要依賴於難以修改的包

7.最大化抽象最大化穩定性

8.將高層設計和架構作為穩定的抽象,組織為穩定的包

以上僅是一些規則簡單的羅列,推薦閱讀此書。

相關文章