提高開發(fā)效率Live?Templates使用技巧詳解
引言
Live Templates 是什么,聽上去感覺挺玄乎的。有的同學用過之后覺得簡直太好用了,不能說大大提高了開發(fā)效率吧,至少也是小小的提高一下,節(jié)省了很多敲重復代碼的時間。有的同學用過之后說:沒什么用,奇技巧罷了。
就算你沒聽過這個概念,但是或多或少你可能都用到過一點,就算沒有用過的話,也可能見到過一些,沒吃過豬肉可能也見過豬跑,就像下面這樣的操作。
總結(jié)一下呢,它就類似于一種快捷指令(神奇代碼),只要你在 IDEA 中輸入特定的字母組合,IDEA 就會幫你在當前輸入的位置插入一段預(yù)先定義好的代碼,代碼可以是固定的,也可以定義一些上下文變量,適用于那些常用的、使用頻率較高的聲明或重復代碼段。
比如聲明靜態(tài) final
的 String
,在不用 Live Tmeplates 的情況下,我們會手動在 IDEA 中依次敲出 "public static final String" 這一行代碼,當然可能借助 IDEA 的只能提示,每個單詞只需要敲前兩個字母。在使用了 Live Tmeplates 的情況下, 我們只需要敲出 psfs
這四個字母,然后按回車鍵,IDEA 就會幫我們在 psfs
這個位置插入 "public static final String" 這一行。
沒用過的同學是不是趕緊打開 IDEA 試一下呢?在設(shè)置界面,輸入 Live Templates
,然后找到右側(cè)的 Java
就可以看到內(nèi)置的模板。不光有 Java 的,對于多種文件類型都有支持,比如 SQL 、JavaScript、JSP 、Kotlin 等。
下面介紹幾個 IDEA 內(nèi)置的、常用的模板。
常用的 Live Templates
main 和 psvm
main 方法插入,雖然我們已經(jīng)可以很熟練的盲打出下面這一段代碼,但是只敲四個字母是不是會更快呢。
public static void main(String[] args){ }
變量聲明
下面一些是常用的變量聲明
psfs
public static final String
psfi
public static final int
prsf
private static final
St
String
控制臺輸出
下面是控制臺輸出,還有一些,不一一列舉了。
sout
文本輸出,最常用到的。
System.out.println();
souf
帶格式化的文本輸出。
System.out.printf();
循環(huán)迭代
fori
輸入完,按回車后,光標會在 i<
的位置,等待輸入臨界值。
for (int i = 0; i < ; i++) { }
iter
用 forEach 的方式循環(huán),在一個數(shù)組或者列表變量下方使用。
List<String> array = new ArrayList<>(); for (String s1 : array) { }
itco
用迭代器的方式迭代,同樣是在一個列表變量下方使用。
List<String> array = new ArrayList<>(); for (Iterator<String> iterator = array.iterator(); iterator.hasNext(); ) { String next = iterator.next(); }
Surround Templates
這種模板是在選中一段代碼后,然后使用快捷鍵 option
+command
+j
調(diào)出提示框,然后選擇一個模板類型。
這個快捷鍵是 MAC 系統(tǒng)下的,如果你用的是 windows,可以通過點擊 code
菜單項,找到 Sorround With
,看看快捷鍵是什么。
C
實現(xiàn)一個 Callable
Callable<Object> callable = new Callable<Object>() { public Object call() throws Exception { System.out.println("hello"); } };
RL 和 WL
插入一段讀鎖或?qū)戞i加解鎖代碼。
// 要先聲明一個讀寫鎖實例 ReadWriteLock readWriteLock = new ReentrantReadWriteLock(); readWriteLock.readLock().lock(); try { System.out.println("hello"); } finally { readWriteLock.readLock().unlock(); }
自定義 Template
有時候我們經(jīng)常會高頻詞的使用一段相似的代碼, 比如做網(wǎng)絡(luò)開發(fā)的同學,會經(jīng)常用到 Socket 相關(guān)的初始化代碼。
對于這種我們自己經(jīng)常要寫的某些類似的代碼段,就可以抽取出一個 Template 出來,方便我們使用。
下面我就實現(xiàn)一個自定的 Template,來看一下是不是大大簡化了重復性勞動。有的同學可能覺得無所謂的事兒,復制、粘貼也挺省事兒。見仁見智吧,覺得有用的可以嘗試一下,覺得雞肋的也無所謂,反正也不影響最后的功能實現(xiàn)。
比如我最新在做一些系統(tǒng)優(yōu)化的工作,這個過程中,我會頻繁的用 commons-lang3
的 StopWatch
來看某些方法或者某些代碼段的執(zhí)行時間。比如下面的代碼段:
StopWatch stopWatch = new StopWatch("代碼段"); stopWatch.start(); try { Thread.sleep(1000); } catch (InterruptedException e) { throw new RuntimeException(e); } stopWatch.stop(); System.out.printf("執(zhí)行時間 %s%n",stopWatch.toString());
由于我比較懶,所以我不想每次都敲重復的內(nèi)容,連粘貼復制都不想。所以就想到了 Live Template。
1、打開 IDEA 的設(shè)置窗口,找到 Editor 下的 Live Templates
,在右側(cè)找到 Java
,點擊最右側(cè)的加號。
2、輸入這個 Template 的名字,到時候可以在編輯器中通過輸入這個名字來插入這個模板。
輸入描述,幫助我們記憶。
最后輸入模板的內(nèi)容。
我給這個模板起名為 watch
,模板內(nèi)容如下:
StopWatch stopWatch = new StopWatch("$MESSAGE$"); stopWatch.start(); $SELECTION$ stopWatch.stop(); System.out.printf("執(zhí)行時間 %s%n",stopWatch.toString());
$SELECTION$
表示選中的部分,我們要監(jiān)控的正好是某個方法或者某個代碼段,所以正好可以用 Surround Templates,并且在內(nèi)容中用了 $SELECTION$
,模板就默認為 Surround Templates了。
$MESSAGE$
就是一個占位符的作用,當我們插入這個模板后,光標會定位到這個占位符,我們就可以在需要定制的地方輸入我們想要的內(nèi)容了。在這里呢,由于我的一個方法中可能用到多個 StopWatch,所以正好在這兒占位,給不同的 StopWatch 賦予不同的名字。
可以通過下面的演示看一下效果。
Live Template 支持的變量
有一些情況下,我們希望插入的內(nèi)容不只是固定不變的代碼段,而是希望加入一些上下文相關(guān)的內(nèi)容,比如當前方法的入?yún)?,比如當前類名,比如當前方法名等。用下面這個例子說明一下。
有一個內(nèi)置的模板叫做 soutm
,它的描述是這樣的:Prints current class and method names to System.out,打印當前類和方法名,我們看一下效果,直接將當前類和方法名 Study.main
填充到了println
參數(shù)位置上。
模板內(nèi)容是這樣的,其中用到了兩個變量是表示當前類名的 $CLASS_NAME$
和表示當前方法名的$METHOD_NAME$
。
System.out.println("$CLASS_NAME$.$METHOD_NAME$");
更多的可用變量可以到 IDEA 官網(wǎng)查看,看到這些變量后,可能會打開你的思路,更近一步的為你提高開發(fā)效率。不過不用這些變量也沒關(guān)系,上面這寫其實差不多也夠用了。
官網(wǎng)地址:www.jetbrains.com/help/idea/t…
以上就是提高開發(fā)效率Live Templates使用技巧詳解的詳細內(nèi)容,更多關(guān)于提高開發(fā)效率Live Templates的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
SpringBoot集成Redis向量數(shù)據(jù)庫實現(xiàn)相似性搜索功能
Redis?是一個開源(BSD?許可)的內(nèi)存數(shù)據(jù)結(jié)構(gòu)存儲,用作數(shù)據(jù)庫、緩存、消息代理和流式處理引擎,向量檢索的核心原理是通過將文本或數(shù)據(jù)表示為高維向量,并在查詢時根據(jù)向量的相似度進行搜索,本文給大家介紹了SpringBoot集成Redis向量數(shù)據(jù)庫實現(xiàn)相似性搜索功能2024-09-09Springboot安全框架整合SpringSecurity實現(xiàn)方式
這篇文章主要介紹了Spring全家桶中Springboot安全框架整合SpringSecurity的實現(xiàn)方式,有需要的朋友可以借鑒參考下,希望可以有所幫助2021-09-09spring?data?jpa如何使用自定義repository實現(xiàn)類
這篇文章主要介紹了spring?data?jpa如何使用自定義repository實現(xiàn)類,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11Java+opencv3.2.0實現(xiàn)hough圓檢測功能
這篇文章主要為大家詳細介紹了Java+opencv3.2.0實現(xiàn)hough圓檢測,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02SpringBoot整合Lucene實現(xiàn)全文檢索的詳細步驟
全文搜索(Full-Text?Search)是指對大規(guī)模存儲在計算機系統(tǒng)中的文本數(shù)據(jù)進行檢索和匹配的技術(shù),它允許用戶輸入關(guān)鍵字,然后從海量的文本數(shù)據(jù)中快速找到相關(guān)的信息,本文介紹了SpringBoot整合Lucene實現(xiàn)全文檢索的詳細步驟,需要的朋友可以參考下2024-03-03