IDEA這樣配置註釋模板,讓你高出一個逼格!!

1、類註釋

打開 IDEA 的 Settings,點擊 Editor-->File and Code Templates,點擊右邊 File 選項卡下面的 Class,在其中添加圖中紅框內的內容:html

/**
 * @author jitwxs
 * @date ${YEAR}年${MONTH}月${DAY}日 ${TIME}
 */

圖片

在我提供的示例模板中,說明了做者和時間,IDEA 支持的全部的模板參數在下方的 Description 中被列出來。網絡

保存後,當你建立一個新的類的時候就會自動添加類註釋。若是你想對接口也生效,同時配置上圖中的 Interface 項便可。app

2、方法註釋

不一樣於目前網絡上互相複製粘貼的方法註釋教程,本文將實現如下功能:函數

  • 根據形參數目自動生成 @param 註解
  • 根據方法是否有返回值智能生成 @Return 註解

相較於類模板,爲方法添加註釋模板就較爲複雜,首先在 Settings 中點擊 Editor-->Live Templatesspa

點擊最右邊的 +,首先選擇 2. Template Group... 來建立一個模板分組:3d

圖片

在彈出的對話框中填寫分組名,我這裏叫作 userDefine:code

圖片

而後選中剛剛建立的模板分組 userDefine,而後點擊 +,選擇 1. Live Templatehtm

圖片

此時就會建立了一個空的模板,咱們修改該模板的 AbbreviationDescriptionTemplate text。須要注意的是,Abbreviation 必須爲 *,最後檢查下 Expand with 的值是否爲 Enter 鍵。blog

圖片

上圖中· Template text 內容以下,請直接複製進去,須要注意首行沒有 /,且 * 是頂格的教程

*
 * 
 * @author jitwxs
 * @date $date$ $time$$param$ $return$
 */

注意到右下角的 No applicable contexts yet 了嗎,這說明此時這個模板尚未指定應用的語言:

圖片

點擊 Define,在彈框中勾選Java,表示將該模板應用於全部的 Java 類型文件。

圖片

設置 applicable contexts

還記得咱們配置 Template text 時裏面包含了相似於 $date$ 這樣的參數,此時 IDEA 還不認識這些參數是啥玩意,下面咱們對這些參數進行方法映射,讓 IDEA 可以明白這些參數的含義。點擊 Edit variables 按鈕:

圖片

爲每個參數設置相對應的 Expression

圖片

設置 Expression

須要注意的是,datetimeExpression 使用的是 IDEA 內置的函數,直接使用下拉框選擇就能夠了,而 param 這個參數 IDEA 默認的實現不好,所以咱們須要手動實現,代碼以下:

groovyScript("def result = '';def params = "${_1}".replaceAll('[[|]|s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {if(params[i] != '')result+='* @param ' + params[i] + ((i < params.size() - 1) ? 'rn ' : '')}; return result == '' ? null : 'rn ' + result", methodParameters())

另外 return 這個參數我也本身實現了下,代碼以下:

groovyScript("return "${_1}" == 'void' ? null : 'rn * @return ' + "${_1}"", methodReturnType())
注:你還注意到我並無勾選了 Skip if defined 屬性,它的意思是若是在生成註釋時候若是這一項被定義了,那麼鼠標光標就會直接跳過它。我並不須要這個功能,所以有被勾選該屬性。

點擊 OK 保存設置,大功告成!

3、檢驗成果

3.1 類註釋

類註釋只有在新建類時纔會自動生成,效果以下:

圖片

類註釋

3.2 方法註釋

將演示如下幾種狀況:

  1. 無形參
  2. 單個形參
  3. 多個形參
  4. 無返回值
  5. 有返回值

圖片

方法註釋

4、Q & A

(1)爲何模板的 Abbreviation 必定要叫 *Expand with 要保證是 Enter 鍵?

答:由於 IDEA 模板的生成邏輯是 模板名 + 生成鍵,當生成鍵是 Enter 時,咱們輸入 * + Enter 就可以觸發模板。

這也同時說明了爲何註釋模板首行是一個 * 了,由於當咱們先輸入 /*,而後輸入 * + Enter,觸發模板,首行正好拼成了 /**,符合 Javadoc 的規範。

(2)註釋模板中爲何有一行空的 *

答:由於我習慣在這一行寫方法說明,因此就預留了一行空的寫,你也能夠把它刪掉。

(3)註釋模板中 $time$$param$ 這兩個明明不相干的東西爲何緊貼在一塊兒?

答:首先網上提供的大部分 param 生成函數在無參狀況下仍然會生成一行空的 @param,所以我對param 函數的代碼進行修改,使得在無參狀況下不生成 @param,可是這就要求 $param$ 要和別人處在同一行中,否則無法處理退格。

(4)爲何 return 參數不使用 methodReturnType(), 而要本身實現?

答:methodReturnType() 在無返回值的狀況下會返回 void,這並無什麼意義,所以我對 methodReturnType() 返回值進行了處理,僅在有返回值時才生成。

(5)爲何 $return$ 不是單獨一行?

答:由於當 methodReturnType() 返回 null 時,沒法處理退格問題,緣由同
第三點。

做者: Jitwxs
連接: https://jitwxs.cn/4135e0a9.html

image

相關文章
相關標籤/搜索