編程小技巧之 IDEA 的 Live Template

Groovy 程序員 腳本語言 Java homer的技術分享 2019-06-27

合格的程序員都善於使用工具,正所謂君子性非異也,善假於物也。

使用自動化工具可以減少自己的工作量,提高工作效率。日常編程過程中,我們經常需要編寫重複的代碼片段,比如說

private static final Logger LOGGER = LoggerFactory.getLogger(HashServiceImpl.class);

每次編寫時都要鍵入很多鍵,有什麼方法可以快速生成這段代碼呢?類似的,如何保存格式固定的常用代碼片段,然後在需要時快速生成呢。IDEA 的 Live Template 是一個可行的途徑。

我也是最近才逐漸使用 IDEA 的 Live Template 功能,之前雖然知道這個功能,但是沒有養成使用的習慣。最近一段時間在不斷審視並反思自己的編程、工作和生活習慣,才發現其中有很多可以優化精進的地方。

這也是《程序員修煉之道》中所說的 Think ! About Your Work 。

IDEA 是一個很強大的編程工具,學會使用它能夠極大的提高工作效率,將精力投入到更關鍵的事情上,而不是將時間浪費在編寫重複代碼上面。

而作為 Java 程序員,令人苦惱的地方是 Java 開發過程中經常需要編寫有固定格式的代碼,例如說聲明一個私有變量,Logger 或者 Bean 等等。對於這種小範圍的代碼生成,我們可以利用 IDEA 提供的 Live Templates 功能。

Live Template 並不是簡單的 Code Snippet,它甚至支持 Groovy函數配置,可以編寫一些複雜的邏輯,支持很複雜的代碼生成。

基本使用

IDEA 自帶很多常用的動態模板,都是大家平常編碼時的常用語句格式。比如說下面四張動圖中的語句。

四張圖分別是 聲明靜態 String 類型成員變量,判斷字符串為空,for 循環和打印函數參數。

編程小技巧之 IDEA 的 Live Template

編程小技巧之 IDEA 的 Live Template

編程小技巧之 IDEA 的 Live Template

編程小技巧之 IDEA 的 Live Template

自定義 Template

打開配置頁面,進入 Live Template 選項卡,我們可以看到 IDEA 預先設置的模板配置。這些模板都是最常用的一些語句,我們先來看一下它們都是如何定義的。

編程小技巧之 IDEA 的 Live Template

縮寫就是 IDEA 識別的模板的別名,就像文章開頭展示的當你鍵入 soutm 時,IDEA 就會自動識別為該模板。

而應用上下文則表示該模板在什麼上下文中生效。比如說上文中時一個 System.out 的語句,它只應該在 Java 的函數體中有效,所以它的應用上下文設置為 Java:statement,在其他類型文件或者 Java 文件的成員變量聲明位置都無法使用該模板。

編程小技巧之 IDEA 的 Live Template

模板內容就是你按下 Tab 鍵之後,IDEA 自動生成的內容,它一般包含兩個部分,純文本和參數。參數可以進行值綁定,還支持光標的自動跳轉。如同上文所示, $CLASS_NAME$ 和 $METHOD_NAME$ 就是參數,而 $END$是一個特殊的參數,它表示光標最後一個跳轉的位置。

而參數設置就是設置這些參數的值,可以使用 IDEA 提供的一些內置函數,還可以使用強大的 Groovy 腳本。去 IDEA 的官網可以查看這些函數的具體作用。

編程小技巧之 IDEA 的 Live Template

我們這裡講解一下 groovyScript("groovy code",arg1) 的使用。它能提供一切你想要的能力,它支持執行 Groovy 腳本處理輸入,然後輸出處理後的字符串

groovyScript("code", ...)
| code | 一段Groovy代碼或者Groovy腳本代碼絕對路徑 |
| ... | 可選入參,這些參數會綁定到`_1, _2, _3, ..._n`, 在 Groovy 代碼中使用。|

比如之前打印函數參數的模板是這樣定義的。

編程小技巧之 IDEA 的 Live Template

groovyScript("'"' + _1.collect { it + ' = [" + ' + it + ' + "]'}.join(', ') + '"'", methodParameters())

methodParameters 是 IDEA 內置的函數,它返回的結果作為參數輸入到 Groovy 的腳本中,生成打印參數函數的字符串。

後記

感謝大家的閱讀,希望大家繼續關注,也可以留言分享你最喜歡使用的編程工具和編程小技巧。

個人微信公眾號 程序員歷小冰 編程小技巧之 IDEA 的 Live Template

個人博客: 「鏈接」

相關推薦

推薦中...