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