如何才能寫出高質量java代碼,這篇文章讓你輕鬆搞定


如何才能寫出高質量java代碼,這篇文章讓你輕鬆搞定

一,命名風格
  • 1,代碼中的命名均不能以下劃線或美元符號開始,也不能以下劃線或美元符號結束。
  • 2,代碼中的命名嚴禁使用拼音與英文混合的方式,更不允許直接使用中文的方式。
  • 3,類名、方法名、參數名、成員變量、局部變量都統一使UpperCamelCase 風格,必須遵從駝峰形式。
  • 4,常量命名全部大寫,單詞間用下劃線隔開,力求語義表達完整清楚,不要嫌名字長。
  • 5,抽象類命名使用 Abstract 或 Base 開頭;異常類命名使用 Exception 結尾 。
  • 6,接口的請求參數的bean,以Req結尾,接口的響應的bean,以Resp結尾.
  • 7,包名統一使用小寫,點分隔符之間有且僅有一個自然語義的英語單詞。包名統一使用單數形式。
  • 8,杜絕完全不規範的縮寫,避免望文不知義。
  • 9,為了達到代碼自解釋的目標,任何自定義編程元素在命名時,使用盡量完整的單詞 組合來表達其意。
  • 10,如果模塊、接口、類、方法使用了設計模式,在命名時體現出具體模式。
  • 11,接口類中的方法和屬性不要加任何修飾符號(public 也不要加),保持代碼的簡潔 性,並加上有效的 Javadoc 註釋。
二,常量定義
  • 1,不允許任何魔法值(即未經定義的常量)直接出現在代碼中 。
  • 2,long 或者 Long 初始賦值時,使用大寫的 L,不能是小寫的 l,小寫容易跟數字 1 混 淆,造成誤解。
  • 3,不要使用一個常量類維護所有常量,按常量功能進行歸類,分開維護(看bean的使用範圍,不要全部都寫在CoreData裡面)。

三,OOP規約

  • 1,避免通過一個類的對象引用訪問此類的靜態變量或靜態方法,無謂增加編譯器解析成本,直接用類名來訪問即可。
  • 2,所有的覆寫方法,必須加@Override 註解 。
  • 3,相同參數類型,相同業務含義,才可以使用 Java 的可變參數,避免使用 Object。
  • 4,外部正在調用或者二方庫依賴的接口,不允許修改方法簽名,避免對接口調用方產生 影響。接口過時必須加@Deprecated 註解,並清晰地說明採用的新接口或者新服務是什麼。
  • 5,不能使用過時的類或方法。
  • 6,Object 的 equals 方法容易拋空指針異常,統一使用StringUtils.equals()方法。
  • 7,所有的相同類型的包裝類對象之間值的比較,全部使用 equals 方法比較。
  • 8,構造方法裡面禁止加入任何業務邏輯,如果有初始化邏輯,請放在 init 方法中。
  • 9,當一個類有多個構造方法,或者多個同名方法,這些方法應該按順序放置在一起, 便於閱讀。
  • 10,類內方法定義順序依次是:公有方法或保護方法 > 私有方法 > getter/setter 方法。
  • 11,循環體內,字符串的連接方式,使用 StringBuilder 的 append 方法進行擴展 。
  • 12,類成員與方法訪問控制從嚴。
四,集合處理
  • 1.不要在 foreach 循環裡進行元素的 remove/add 操作 。
  • 2.在 JDK7 版本及以上,Comparator 要滿足如下三個條件:

2.1 x,y的比較結果和y,x的比較結果相反
2.2 x=y,則x,z比較結果和y,z比較結果相同。
2.3 x>y,y>z,則x>z。

  • 3.使用 entrySet 遍歷 Map 類集合 KV,而不是 keySet 方式進行遍歷。

五,併發處理

  • 1,獲取單例對象需要保證線程安全,其中的方法也要保證線程安全。
  • 2,線程資源必須通過線程池提供,不允許在應用中自行顯式創建線程。
  • 3,SimpleDateFormat 是線程不安全的類,一般不要定義為static變量,如果定義為 static,必須加鎖,或者使用 DateUtils 工具類。
  • 4,避免 Random 實例被多線程使用,雖然共享該實例是線程安全的,但會因競爭同一 seed 導致的性能下降。
  • 5,在併發場景下,通過雙重檢查鎖(double-checked locking)實現延遲初始化的優化問題隱患。
六,控制語句
  • 1,在一個 switch 塊內,每個 case 要麼通過 break/return 等來終止,要麼註釋說明程 序將繼續執行到哪一個 case 為止;在一個 switch 塊內,都必須包含一個 default 語句並且 放在最後,即使它什麼代碼也沒有。
  • 2,在 if/else/for/while/do 語句中必須使用大括號。即使只有一行代碼。
  • 3,表達異常的分支時,少用 if-else 方式 ,可使用衛語句。
  • 4,循環體中的語句要考量性能,以下操作儘量移至循環體外處理,如定義對象、變量、 獲取數據庫連接,進行不必要的 try-catch 操作(這個 try-catch 是否可以移至循環體外)。
七,註釋規約
  • 1,類、類屬性、類方法的註釋必須使用 Javadoc 規範,使用/*內容/格式,不得使用 // xxx方式。
  • 2,所有的抽象方法(包括接口中的方法)必須要用 Javadoc 註釋、除了返回值、參數、 異常說明外,還必須指出該方法做什麼事情,實現什麼功能。
  • 3,方法內部單行註釋,在被註釋語句上方另起一行,使用//註釋。方法內部多行註釋 ,使用/* */註釋,注意與代碼對齊。
  • 4,代碼修改的同時,註釋也要進行相應的修改,尤其是參數、返回值、異常、核心邏輯 等的修改。
  • 5,對於註釋的要求:第一、能夠準確反應設計思想和代碼邏輯;第二、能夠描述業務含 義,使別的程序員能夠迅速瞭解到代碼背後的信息。完全沒有註釋的大段代碼對於閱讀者形同 天書,註釋是給自己看的,即使隔很長時間,也能清晰理解當時的思路;註釋也是給繼任者看 的,使其能夠快速接替自己的工作。

我是一名從事多年開發的java老程序猿員,目前辭職在做自己的java私人訂製課程,今年年初我花了一個月整理了一份最適合2019年學習的java學習乾貨資料,從最基礎的javase到spring各種框架都有整理,送給每一位java小夥伴,想要獲取的可以關注我的頭條號並在後臺私信我:02,即可免費獲取。

鏈接:https://url.cn/5r89QSw


分享到:


相關文章: