一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - 強(qiáng)大的 IDEA 代碼生成器,學(xué)會(huì)用,真香!

強(qiáng)大的 IDEA 代碼生成器,學(xué)會(huì)用,真香!

2020-10-20 23:44搜云庫(kù)技術(shù)團(tuán)隊(duì) Java教程

Java 開(kāi)發(fā)過(guò)程經(jīng)常需要編寫(xiě)有固定格式的代碼,例如說(shuō)聲明一個(gè)私有變量,logger或者bean等等。

 前言

Java 開(kāi)發(fā)過(guò)程經(jīng)常需要編寫(xiě)有固定格式的代碼,例如說(shuō)聲明一個(gè)私有變量,logger或者bean等等。對(duì)于這種小范圍的代碼生成,我們可以利用 IDEA 提供的 Live Templates功能。剛開(kāi)始覺(jué)得它只是一個(gè)簡(jiǎn)單的Code Snippet,后來(lái)發(fā)現(xiàn)它支持變量函數(shù)配置,可以支持很復(fù)雜的代碼生成。下面我來(lái)介紹一下Live Templates的用法。

強(qiáng)大的 IDEA 代碼生成器,學(xué)會(huì)用,真香!

基本使用

IDEA 自帶很多常用的動(dòng)態(tài)模板,在 Java 代碼中輸入fori,回車(chē)就會(huì)出現(xiàn)

for ( int i = 0 ; i < ; i++) { 

 

強(qiáng)大的 IDEA 代碼生成器,學(xué)會(huì)用,真香!

按Tab可以在各個(gè)空白處跳轉(zhuǎn),手動(dòng)填值。

自定義 Template

官方自帶模板畢竟不能滿(mǎn)足我們個(gè)人編碼風(fēng)格的需要,Live Templates提供了變量函數(shù)的方式供我們自定義。

簡(jiǎn)單用法

新增自定義模板,首先需要填寫(xiě)觸發(fā)單詞(即 Abbreviation),描述是可選的,然后定義模板的上下文,點(diǎn)擊define選擇Java,這樣在編輯 Java 的時(shí)候就會(huì)觸發(fā)當(dāng)前模板,定義完上下文之后,就可以填寫(xiě)模板了。

強(qiáng)大的 IDEA 代碼生成器,學(xué)會(huì)用,真香!

下面列舉幾個(gè)我常用的簡(jiǎn)單模板

========== 

 

<out> 

 

---------- 

 

System.out.println($END$) 

 

========== 

 

<pfs> 

 

---------- 

 

privatefinalstatic String $varName$ = "$var$" ;` 

 

========== 

 

<privateField> 

 

---------- 

 

/** 

 

* $COMMENT$ 

 

@Getter 

 

@Setter 

 

private $TYPE$ $NAME$; 

 

========== 

 

<main> 

 

---------- 

 

public static void main (String[] args) { 

 

$END$ 

 

 

========== 

模板支持變量的定義,使用$$包圍的字符表示一個(gè)變量。是一個(gè)特殊的預(yù)定義變量,表示光標(biāo)最后跳轉(zhuǎn)的位置。每個(gè)變量的位置都可以跳轉(zhuǎn)過(guò)去。

高級(jí)用法

如果你用過(guò) vim 的Code Sinppet插件,你會(huì)發(fā)現(xiàn)模板里面是可以執(zhí)行函數(shù)的,強(qiáng)大的 Live Templates當(dāng)然也支持,而且 IDEA 能夠感知代碼的語(yǔ)義,例如說(shuō)當(dāng)前編輯的函數(shù)的參數(shù)。但這一點(diǎn)就能夠讓我們玩出花來(lái)。我們從易到難來(lái)研究模板函數(shù)的功能。

強(qiáng)大的 IDEA 代碼生成器,學(xué)會(huì)用,真香!

前面我們提到的變量可以綁定函數(shù),配置方式如上圖所示。

快速聲明變量

聲明變量是一個(gè)常用的操作,特別是需要聲明變量需要加注解,注釋的時(shí)候,這些代碼寫(xiě)起來(lái)就很枯燥。下面是我定義的模板:

<osgiRef> 

 

---------- 

 

/** 

 

* $END$ 

 

@OsgiReference 

 

@Setter 

 

private $TYPE$ $NAME$; 

乍一看這個(gè)模板跟我上面定義的privateField差不多,唯一的不同在于我給這些變量綁定了函數(shù)。

1.clipboard():返回當(dāng)前粘貼板的字符串

2.decapitalize():將輸入的字符串首字母變?yōu)樾?xiě)

下面我們演示一下,我們先拷貝當(dāng)前類(lèi)名,然后輸入osgiRef

強(qiáng)大的 IDEA 代碼生成器,學(xué)會(huì)用,真香!

快速聲明 logger

聲明 logger 也是一個(gè)常用的操作,上面我們是利用了粘貼函數(shù)來(lái)快速聲明變量,現(xiàn)在我們來(lái)利用另一個(gè)函數(shù)className(),顧名思義,它的作用就是返回當(dāng)前類(lèi)名。

<logger> 

 

---------- 

 

/** logger */ 

 

privatestaticfinal Logger LOGGER = LoggerFactory.getLogger($CLASS$.class); 

強(qiáng)大的 IDEA 代碼生成器,學(xué)會(huì)用,真香!

最強(qiáng)大的 groovyScript()

如果說(shuō)上面用到的函數(shù)提供的能力有限,不夠靈活,那么groovyScript()提供了一切你想要的能力,它支持執(zhí)行 Groovy 腳本處理輸入,然后輸出處理后的字符串。

groovyScript( "code" , ...) 

 

| code | 一段Groovy代碼或者Groovy腳本代碼絕對(duì)路徑 | 

 

| ... | 可選入?yún)ⅲ@些參數(shù)會(huì)綁定到`_1, _2, _3, ..._n`, 在 Groovy 代碼中使用。| 

下面我們來(lái)看一下它的實(shí)際應(yīng)用。

快速 bean 配置

新增一個(gè)服務(wù)都要在 Spring 中注冊(cè)一個(gè) bean,一般這個(gè)配置無(wú)非就是將指明id和class,由于我們是在 xml 中配置,所以不能利用className()函數(shù),但是我們可以利用clipboard()函數(shù)獲取到類(lèi)的全引用,在 IDEA 中我們直接右鍵類(lèi)名,點(diǎn)擊Copy Reference就行。然后執(zhí)行 groovy 腳本獲取類(lèi)名。

<bean> 

 

---------- 

 

<bean id= "$id$" class = "$REF$" /> 

id綁定decapitalize(groovyScript("_1.tokenize('.')[-1]", clipboard())),首先取clipboard()的值得到類(lèi)的全引用,然后執(zhí)行 groovy 代碼_1.tokenize('.')[-1](按.分割為字符串?dāng)?shù)組,然后取最后一個(gè)即可得到類(lèi)名,然后用decapitalize()將首字母小寫(xiě)即可得到id。

強(qiáng)大的 IDEA 代碼生成器,學(xué)會(huì)用,真香!

快速打印當(dāng)前上下文信息

打印錯(cuò)誤日志的時(shí)候需要打印當(dāng)前上下文信息的,例如說(shuō)入?yún)ⅲ袝r(shí)候入?yún)⒑芏嗟臅r(shí)候,寫(xiě)起來(lái)很痛苦,好在有模板函數(shù)methodParameters(),返回當(dāng)前函數(shù)參數(shù)的列表,當(dāng)然這個(gè)列表我們不能直接使用,需要結(jié)合groovyScript對(duì)它進(jìn)行轉(zhuǎn)化。

<printContext> 

 

--------------- 

 

LogUtil.$TYPE$(LOGGER, "$MSG$ " + $params$); 

將params綁定到groovyScript("'"' + _1.collect { it + ' = [" + ' + it + ' + "]'}.join(', ') + '"'", methodParameters()),就能夠自動(dòng)將當(dāng)前函數(shù)的參數(shù)格式化后輸出

強(qiáng)大的 IDEA 代碼生成器,學(xué)會(huì)用,真香!

總結(jié)

上面我們簡(jiǎn)單介紹了常用的模板函數(shù),其實(shí) IDEA 還有很多其它模板函數(shù),具體參考Creating and Editing Template Variables

(https://www.jetbrains.com/help/idea/2016.3/creating-and-editing-template-variables.html)。

IDEA 是一個(gè)很強(qiáng)大的工具,善用工具能夠極大的提高工作效率,將精力投入到關(guān)鍵的事情上,而不是將時(shí)間浪費(fèi)在編寫(xiě)重復(fù)代碼上面。一些更高級(jí)的用法還有待大家去發(fā)掘。最后推廣一波代碼生成插件CodeMaker(https://github.com/x-hansong/CodeMaker),好好利用也能節(jié)省很多重復(fù)編寫(xiě)代碼的時(shí)間。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 我的好妈妈7中字在线观看韩国 | 四虎在线视频免费观看 | 亚洲精品色婷婷在线影院麻豆 | h片免费网站 | 久久亚洲网站 | 九9热这里真品 | 楚乔传第二部免费观看全集完整版 | 国产精品久线观看视频 | 毛片亚洲毛片亚洲毛片 | 亚洲 日韩 国产 中文视频 | 天天做天天玩天天爽天天 | 99热这里只有精品久久免费 | 男女一级簧色带 | 精品第一国产综合精品蜜芽 | 2018高清国产一道国产 | 亚洲精品国产在线网站 | 天海翼最新作品 | 无码日韩精品一区二区免费 | 天天视频国产精品 | 大陆国语自产精品视频在 | 午夜熟女插插XX免费视频 | 国产精品久久国产三级国电话系列 | 亚洲成人网页 | 国产精品免费_区二区三区观看 | 毛片视频网站在线观看 | 亚洲国产精品二区久久 | 韩国三级 720p | 国产专区一va亚洲v天堂 | 三级黄色图片 | 红楼影视h38bar在线线播放 | 亚洲国产成人99精品激情在线 | 亚洲网站在线看 | 天天舔天天射 | 成人免费毛片一区二区三区 | 国产成人亚洲综合网站不卡 | 日韩在线观看一区二区不卡视频 | 莫莉瑞典1977k | 国产在线看片网站 | 韩国靠逼 | 99精品视频一区在线观看miya | 2015台湾永久免费平台 |