Java 编码规范8(编程规约-注释规约与其它)
注釋規約與其它
其它相關文章
Java 編碼規范1(編程規約-命名風格)
Java 編碼規范2(編程規約-常量定義)
Java 編碼規范3(編程規約-代碼格式)
Java 編碼規范4(編程規約-OOP規約)
Java 編碼規范5(編程規約-集合處理)
Java 編碼規范6(編程規約-并發處理)
Java 編碼規范7(編程規約-控制語句)
Java 編碼規范8(編程規約-注釋規約與其它)
Java 編碼規范9(異常日志)
Java 編碼規范10(單元測試)
Java 編碼規范11(安全規約)
Java 編碼規范12(MySQL-建表規約)
Java 編碼規范13(MySQL-索引規約)
Java 編碼規范14(MySQL-SQL語句與ORM映射)
Java 編碼規范15(工程結構)
[強制] 類、類屬性、類方法的注釋必須使用Javadoc規范,使用/**內容*/格式,不得使用// xxx方式。
- 說明:在IDE編輯窗口中,Javadoc方式會提示相關注釋,生成Javadoc可以正確輸出相應注釋;在IDE中,工程調用方法時,不進入方法即可懸浮提示方法、參數、返回值的意義,提高閱讀效率。
[強制] 所有的抽象方法(包括接口中的方法)必須要用Javadoc注釋,除了返回值、參數、異常說明外,還必須指出該方法做什么事情,實現什么功能。
- 說明:對子類的實現要求,或者調用注意事項,請一并說明。
[強制] 所有的類都必須添加創建者和創建日期。
[強制] 方法內部單行注釋,在被注釋語句上方另起一行,使用//注釋。方法內部多行注釋使用/* */注釋,注意與代碼對齊。
[強制] 所有的枚舉類型字段必須要有注釋,說明每個數據項的用途。
[強制] 與其“半吊子”英文來注釋,不如用中文注釋把問題說清楚。專有名詞與關鍵字保持英文原文即可。
- 反例:“TCP連接超時”解釋成“傳輸控制協議連接超時”,理解反而費腦筋。
[推薦] 代碼修改的同時,注釋也要進行相應的修改,尤其是參數、返回值、異常、核心邏輯等的修改。
- 說明:代碼與注釋更新不同步,就像路網與導航軟件更新不同步一樣,如果導航軟件嚴重滯后,就失去了導航的意義。
[參考] 謹慎注釋掉代碼。在上方詳細說明,而不是簡單地注釋掉。如果無用,則刪除。
- 說明:代碼被注釋掉有兩種可能性:
- 后續會恢復此段代碼邏輯。
- 永久不用。前者如果沒有備注信息,難以知曉注釋動機。后者建議直接刪掉(代碼倉庫保存了歷史代碼)。
[參考] 對于注釋的要求:
- 完全沒有注釋的大段代碼對于閱讀者形同天書,注釋是給自己看的,即使隔很長時間,也能清晰理解當時的思路
- 注釋也是給繼任者看的,使其能夠快速接替自己的工作。
[參考] 好的命名、代碼結構是自解釋的,注釋力求精簡準確、表達到位。避免出現注釋的一個極端:過多過濫的注釋,代碼的邏輯一旦修改,修改注釋是相當大的負擔。
反例:
// put elephant into fridge put(elephant, fridge);- 方法名put,加上兩個有意義的變量名elephant和fridge,已經說明了這是在干什么,語義清晰的代碼不需要額外的注釋。
[參考] 特殊注釋標記,請注明標記人與標記時間。注意及時處理這些標記,通過標記掃描,經常清理此類標記。線上故障有時候就是來源于這些標記處的代碼。
- 待辦事宜(TODO):( 標記人,標記時間,[預計處理時間])
- 表示需要實現,但目前還未實現的功能。
- 這實際上是一個Javadoc的標簽,目前的Javadoc還沒有實現,但已經被廣泛使用。只能應用于類,接口和方法(因為它是一個Javadoc標簽)。
- 錯誤,不能工作(FIXME):(標記人,標記時間,[預計處理時間])
- 在注釋中用FIXME標記某代碼是錯誤的,而且不能工作,需要及時糾正的情況。
[強制] 在使用正則表達式時,利用好其預編譯功能,可以有效加快正則匹配速度。
- 不要在方法體內定義:Pattern pattern = Pattern.compile(規則);
[強制] velocity調用POJO類的屬性時,建議直接使用屬性名取值即可,模板引擎會自動按規范調用POJO的getXxx(),如果是boolean基本數據類型變量(boolean命名不需要加is前綴),會自動調用isXxx()方法。
- 注意如果是Boolean包裝類對象,優先調用getXxx()的方法。
[強制] 后臺輸送給頁面的變量必須加$!{var}——中間的感嘆號。
- 如果var=null或者不存在,那么${var}會直接顯示在頁面上。
[強制] 注意 Math.random() 這個方法返回是double類型,注意取值的范圍 0≤x<1(能夠取到零值,注意除零異常)。
- 如果想獲取整數類型的隨機數,不要將x放大10的若干倍然后取整,直接使用Random對象的nextInt或者`nextLong方法。
[強制] 獲取當前毫秒數System.currentTimeMillis(); , 而不是new Date().getTime();
- 如果想獲取更加精確的納秒級時間值,使用ystem.nanoTime()的方式。在JDK8中,針對統計時間等場景,推薦使用Instant類。
[推薦] 不要在視圖模板中加入任何復雜的邏輯。
- 根據MVC理論,視圖的職責是展示,不要搶模型和控制器的活。
[推薦] 任何數據結構的構造或初始化,都應指定大小,避免數據結構無限增長吃光內存。
[推薦] 及時清理不再使用的代碼段或配置信息。
- 說明:對于垃圾代碼或過時配置,堅決清理干凈,避免程序過度臃腫,代碼冗余。
- 正例:對于暫時被注釋掉,后續可能恢復使用的代碼片斷,在注釋代碼上方,統一規定使用三個斜杠(///)來說明注釋掉代碼的理由。
總結
以上是生活随笔為你收集整理的Java 编码规范8(编程规约-注释规约与其它)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CSS的语法结构
- 下一篇: rsync推拉模型及结合inotify实