1 背景
Java開發(fā)過程中往往需要編寫固定格式的代碼,比如聲明私有變量、logger或者bean等。對于這種小規(guī)模的代碼生成,我們可以使用IDEA提供的Live Templates功能。一開始我以為它只是一個簡單的Code Snippet,后來發(fā)現(xiàn)它支持變量函數(shù)配置,可以支持非常復(fù)雜的代碼生成。下面介紹一下Live Templates的用法。

2 基本使用
IDEA自帶很多常用的動態(tài)模板,在Java代碼中輸入fori,回車會出現(xiàn):
for (int i = 0; i < ; i++) {
}按 T?ab 跳入每個空白并手動填寫值。
更多 IDEA 操作如下:
public class Example {
// geti 生成單例語句
public static Example getInstance() {
return new Example();
}
// prsf 生成 private static final
private static final ...;
// psf 生成 public static final
public static final ...;
// psfi 生成 public static final int
public static final int ...;
// psfs 生成 public static final String
public static final String ...;
// main 或者 psvm 生成 main 函數(shù)
public static void main(String[] args) {
// fori 生成 for 循環(huán)
for (int i = 0; i < 10; i++) {
}
// C 生成 Callable
Callable
3 自定義模板
畢竟官方內(nèi)置的模板不能滿足我們個人編碼風(fēng)格的需求。Live Templates 提供了可變函數(shù)供我們自定義。
簡單用法
添加自定義模板,首先需要填寫觸發(fā)詞(即Abbreviation),描述可選,然后定義模板的上下文,點擊define選擇Java,這樣編輯Java的時候就會觸發(fā)當(dāng)前模板,定義好上下文后,就可以填寫模板了。
比如定義一個私有變量:
通過輸入 privateField 就可以輸出以下代碼:
/**
* $COMMENT$
*/
@Getter
@Setter
private $TYPE$ $NAME$;
模板支持定義變量,$$包圍的字符代表一個變量。$END$ 是一個特殊的預(yù)定義變量,表示光標最后跳轉(zhuǎn)的位置。每個變量的位置都可以跳轉(zhuǎn)到。
4 進階用法
如果你用過vim的Code Sinppet插件,你會發(fā)現(xiàn)函數(shù)可以在模板中執(zhí)行,當(dāng)然強大的Live Templates也支持,IDEA可以感知代碼的語義,比如參數(shù)當(dāng)前編輯的功能。但這就是讓我們玩得開心的原因。我們從易到難探索模板函數(shù)的功能。
前面我們提到的變量可以綁定到函數(shù)上,配置方法如上圖所示。
聲明變量是一個常見的操作,尤其是需要聲明需要注解的變量時。注釋的時候,這些代碼寫起來很枯燥。這是我定義的模板:
聲明 logger 也是一個常見的操作。現(xiàn)在我們使用一個函數(shù) className() 來實現(xiàn)。顧名思義,它的作用就是返回當(dāng)前的類名。
5 總結(jié)
上面我們簡單介紹了常用的模板函數(shù)。其實IDEA還有很多其他的模板函數(shù)。有關(guān)詳細信息,請參閱創(chuàng)建和編輯模板變量。IDEA 是一個非常強大的工具。善用工具可以大大提高工作效率,把精力集中在關(guān)鍵的事情上,而不是把時間浪費在寫重復(fù)的代碼上。一些更高級的用法還有待發(fā)現(xiàn)。好好利用它,也可以省下很多重復(fù)寫代碼的時間。
分享題目:IntellijIDEA使用技巧,可以讓你的代碼飛起來!
標題來源:
http://m.fisionsoft.com.cn/article/djgcgse.html