在日常項(xiàng)目開發(fā)過程中铅碍,項(xiàng)目組都會(huì)有自己的一套默認(rèn)的注釋模板傻谁。這里书劝,我們介紹下如何在Intellj idea(由于Android Studio是基于idea的老充,配置是一樣的)中葡盗,修改默認(rèn)的注釋模板,以獲得我們想要的效果啡浊。文中將分別介紹
- 文件頭(File Header)的配置:在創(chuàng)建代碼文件時(shí)在文件頭生成
- 類的配置:在新建類文件時(shí)自動(dòng)生成觅够,其模板中會(huì)解析File Header文件中的內(nèi)容
- 方法的配置:配置好模板,根據(jù)快捷鍵生成
一巷嚣、配置File Header注釋模板
在打開的idea工程中喘先,選擇File->Setting->Editor->File and Code Templates
,在打開的右側(cè)窗口中選取Includes
頁(yè)簽下的File Header
子項(xiàng)(若不存在該項(xiàng)廷粒,則新建一個(gè))窘拯,如下所示:
看下idea給出的描述信息吧
這是一個(gè)內(nèi)建的模板红且。它包含了一個(gè)通過#parse指令,可被文件模板包含的代碼片段树枫。該模板是可編輯的直焙。與靜態(tài)文本景东,代碼和注釋一起砂轻,你也可以使用預(yù)定義變量,然后它們將像宏一樣展開為相應(yīng)的值斤吐。
-
${PACKAGE_NAME}
被創(chuàng)建新文件的包名搔涝。 -
${USER}
當(dāng)前用戶系統(tǒng)登陸名,這個(gè)名字可以在計(jì)算機(jī)->管理
里面做修改和措。 -
${DATE}
當(dāng)前系統(tǒng)日期 -
${TIME}
當(dāng)前系統(tǒng)時(shí)間 -
${YEAR}
當(dāng)前年份 -
${MONTH}
當(dāng)前月份 -
${MONTH_NAME_SHORT}
當(dāng)前月份名的前三個(gè)字母庄呈,比如,Jan派阱,F(xiàn)eb等 -
${MONTH_NAME_FULL}
當(dāng)前月份名的完整名稱诬留,比如,January, February等 -
${DAY}
月份的當(dāng)前天 -
${DAY_NAME_SHORT}
當(dāng)前天名的前三個(gè)字母贫母,比如文兑,Mon,Tue等 -
${DAY_NAME_FULL}
當(dāng)前天名的前三個(gè)字母腺劣,比如绿贞,Monday,Tuesday等 -
${HOUR}
當(dāng)前小時(shí) -
${MINUTE}
當(dāng)前分鐘 -
${PROJECT_NAME}
當(dāng)前工程名
通過以上橘原,我們可以知道籍铁,該文件會(huì)是其它模板文件的內(nèi)建模板,我們通持憾希可以使用其預(yù)定義的變量拒名。下面給出一個(gè)模板:
/**
*
* @author: ${USER}
* @description please add a description here
* @date: Create in ${TIME} ${DATE}
*/
將以上內(nèi)容貼到編輯框中,然后點(diǎn)擊Apply
或Ok
按鈕芋酌。接著增显,新建一個(gè)文件后,可以看到如下的結(jié)果隔嫡。
/**
* @author: killua
* @description please add a description here
* @date: Create in 20:20 2018/7/14
*/
public class Demo
{
}
這樣子甸怕,我們就完成了文件頭的配置。
二腮恩、配置類注釋模板
類模板的配置與文件頭大餓配置有點(diǎn)重復(fù)的感覺梢杭。如果已經(jīng)配置了文件頭后,就不需要再配置該模板了秸滴。該模板只針對(duì)所有的Class類武契。如果要為接口添加注釋,需要修改相應(yīng)的模板。
通過File->Setting->Editor->File and Code Templates
咒唆,打開右側(cè)Files
頁(yè)簽下的Class
子項(xiàng)届垫,進(jìn)行配置。
稍微看下說明吧:
這是一個(gè)內(nèi)建的模板全释,用于在每次你通過選擇New->Java Class->Class菜單來創(chuàng)建一個(gè)新的Java類的時(shí)候装处。它也可以指定任意數(shù)量的自定義變量,格式為
${<VARIABLE_NAME>}
浸船,這種情況下妄迁,在你創(chuàng)建新文件前,你將收到一個(gè)對(duì)話框提示李命,你可以在里面為所有的自定義變量的特定值登淘。使用#parse
指令,可將include tab頁(yè)匯總的模板包含進(jìn)來封字,通過指定期望的模板名作為參數(shù)黔州。如#parse("File Header.java")
。這里阔籽,因?yàn)槲覀円约霸趇nclude中配置了File Header.java流妻,所以可以不做修改。
三仿耽、配置方法模板
idea自帶了一個(gè)方法模板合冀,但只有param和return字段,不夠?qū)嵱孟詈兀缦滤荆?/p>
/**
*
* @param param
* @return
*/
private boolean isShow(String param)
{
return true;
}
通過在方法定義上一行中敲擊/**
+ Enter
觸發(fā)模板君躺。
接著,我們來實(shí)現(xiàn)我們的自定義模板开缎,通過File-->Settings-->Editor-->Live Templates
棕叫,然后點(diǎn)擊右上角的+
,選擇Template Group
來創(chuàng)建一個(gè)新的組奕删,取名為CustomGroup
俺泣,如圖所示。
然后完残,選擇新創(chuàng)建的
CustomGroup
伏钠,然后再次選擇+
,這次選擇Live Templates
谨设,新建一個(gè)模板到模板組中熟掂,如下所示:這里Abbreviation中填入
*
(觸發(fā)條件為/* + 模板名+快捷鍵
),這是觸發(fā)條件的縮寫扎拣。第二個(gè)框中填入模板的描述赴肚,然后素跺,點(diǎn)擊底下的define按鈕,在彈出框中誉券,選擇相應(yīng)的語(yǔ)言場(chǎng)景指厌。填入模板內(nèi)容,如下:
*
*
* @author $user$
* @param $param$
* @return $return$
* @date $time$ $date$
**/
設(shè)置參數(shù)名時(shí)必須用${參數(shù)名}$
的方式踊跟,為了獲取param和return的參數(shù)踩验,idea提供了內(nèi)置的幾個(gè)方法:
-
param
通過methodParameters()
來獲取 -
return
通過methodReturnType()
來獲取 -
time
通過time()
來獲取 -
date
通過date()
來獲取 -
user
通過user()
來獲取
通過點(diǎn)擊Edit Variables
來設(shè)置相應(yīng)的參數(shù)值,如下所示:
最后琴锭,修改idea默認(rèn)的快捷鍵晰甚,將tab
改為Enter
,如下圖所示决帖。
這樣子就完成了方法注釋模板的編輯,新建方法后蓖捶,敲擊*
+Enter
后地回,效果如下。
/**
*
* @author killua
* @param [`param1`, parm2]
* @return
* @date 12:24 2018/7/15
**/
但代碼檢測(cè)工具會(huì)對(duì)參數(shù)以紅色告警方式顯示俊鱼,這是因?yàn)樗也坏?code>[param1, parm2]參數(shù)刻像。
如果要顯示參數(shù)列表單獨(dú)顯示那種方式(自帶那種方式),只能在方法內(nèi)部實(shí)現(xiàn)并闲,這時(shí)候需要將配置的methodParameters()
替換為以下腳本:
groovyScript("def result=''; def params=\"*$**{**_1**}\"**.replaceAll('**[\\\\[**|**\\\\]**|**\\\\**s**]**', '').split(',').toList(); for(i = 0; i < params.size(); i++)* *{**result+=' * @param ' + params**[**i**]* *+ ((i < params.size() - 1) ? '**\\**n**\\**b' : '')**}**; return result", methodParameters())*
方法內(nèi)和外的效果對(duì)比细睡,方法外無法獲取參數(shù)列表
/**
*
* @author killua
* @param null
* @return
* @date 12:22 2018/7/15
**/
private boolean isShow(String param1, String parm2)
{
/**
*
* @author killua
* @param param1
* @param parm2
* @return
* @date 12:22 2018/7/15
**/
return true;
}
這幾種方式都不算好,因?yàn)镮ntellj idea的/** + Enter
不算一個(gè)Live Template帝火。這里有個(gè)折中的方案溜徙,就是同時(shí)利用了自帶的/** + Enter
和新建的Live Template。并在新建模板中添加你額外的屬性犀填,如下所示:
注意空格:
@author $USER$
* @since $DATE$;
然后蠢壹,先敲擊自帶的功能/** + Enter
,然后繼續(xù)在注釋中敲擊auth+Enter
獲取完整的信息九巡,如下:
/**
*
* @param param1
* @param parm2
* @author killua
* @since 2018/7/15;
* @return
*/
private boolean isShow(String param1, String parm2)
{
return true;
}