天天看點

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

今天突發奇想,對編碼習慣和程式設計風格很感興趣,于是乎,找了一下關于程式設計風格(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.将高層設計和架構作為穩定的抽象,組織為穩定的包

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