• 優秀Java程序員的編程風格

    2
    Java 編程 C/C++ Go 13902 次瀏覽

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

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

    來源:yang_best的專欄

    相似問題

    相關經驗

    相關資訊

    相關文檔

  • sesese色