1. 程式人生 > >Intellij IDEA神器常用技巧八-2018版本新增快捷鍵

Intellij IDEA神器常用技巧八-2018版本新增快捷鍵

工欲善其事必先利其器,如果有一款IDE可以讓你更高效地專注於開發以及原始碼閱讀,為什麼不試一試?

3月27日,jetbrains正式釋出期待已久的IntelliJ IDEA 2018.1,再次讓人眼前一亮:什麼,還能這麼玩?

下面,我們來快速瞭解一下 IDEA 2018.1 最新版本給我們帶來哪些驚喜

1. stream程式碼自動生成更智慧

1
IDEA對java程式碼的自動化生成令人驚歎,一個alt+enter或者alt+/可以省去很多敲打鍵盤的操作。本次更新對stream api的支援更加智慧化,如上圖,如果對一個list filer掉指定的type之後,在後續的map操作中,自動給你加上一個cast。

2. while迴圈優化

2
IDEA智慧檢測程式碼邏輯,將原本醜陋的程式碼自動改寫,while優化也是繼承自此理念。上圖中展示的是,while if break 邏輯,直接修改成do while,程式碼顏值和易理解程度明顯提升。

3. 優化多餘的資源關閉操作

3
使用過IDEA的同學可能會經常看到程式碼裡面有灰色的程式碼,這就提示你,這段程式碼是多餘了,不可達的程式碼,可以刪掉,程式碼更乾淨整潔。上圖中展示的是,當你已經使用了try resource的方式來自動關閉資源,沒有必要再手動呼叫一次close,顯示成灰色,alt+enter一鍵自動刪除。

4. 字串陣列自動排序

4
這個功能也是非常貼心,不得不佩服jetbrain對產品細節的打磨。如果你程式碼裡面有一堆字串常量,想做一個簡單的按字母排序,只需要在陣列上按下alter+enter,然後sort conetnt,IDEA會自動排序,秒級完成。

5. 拷貝建構函式完整性提示

5
拷貝建構函式在實際專案開發過程中也是比較常見的,通過同一個類的物件,生成另外一個物件,這個過程中,如果少set了一個屬性,在後續的邏輯中很容易出現NPE。上圖展示的是,當你實現拷貝建構函式的時候,忘了拷貝 myFileFiltermyForcedToUseIdeaFileChooser這兩個屬性,IDEA會給你智慧提示,讓你修改。

6. postfix支援自定義模板

postfix可以說是IDEA裡面最有特色的一大功能,和live template並駕齊驅,完成一些非常快速的操作,關於這兩個強大的功能可以翻到文末我之前錄製的視訊課程,這裡不過多介紹。在這之前,我一直覺得postfix比不上live template,是因為他不支援自定義模板,一直想不通為什麼jetbrain不開發這個功能來提高postfix的地位,沒想到2018.1終於實現了自定義模板。
6
上圖中,自定義了 .do這個postfix,我們在敲了一個表示式之後,喚出 .do這個postfix,IDEA自動送你一個do while迴圈,並且隨後游標自動跳轉到你接下來需要書寫邏輯的地方,棒不棒?

7. 自定義類生成檔名前後綴

7
這個功能是IDEA對自動生成類檔案的增強,IDEA的自動生成類檔案,舉兩個簡單的例子
- 你建立好一個介面之後,直接在介面名處按下alt+enter,動一動上下鍵,一路按回車,可以給你自動生成這個介面的實現,預設字尾為Impl
- 你要對當前類寫個UT,直接在當前類下按下cmd+shift+t,一路按回車,動一動上下鍵,空格鍵,可以給你自動生成這個類的UT,預設字尾為Test

之前這個預設值在IDEA中是不能修改的,新版本不僅可以修改這個預設字尾,甚至連預設字首也可以修改,自由度更高,可以讓自動生成的類更加貼合你的程式碼風格

8. debug異常模擬

8
IDEA的debug功能可以說讓我愛不釋手,無論是bug的排查,原始碼的閱讀,超多驚豔的功能幾乎每次都能讓你瞬間定位關鍵程式碼。在之前的版本,IDEA已經實現了表示式(段落)求值,動態值修改,force return等強悍的除錯功能,新版增加了Exception模擬功能。debug的時候,你可以在任意一個地方,模擬異常的丟擲,這在驗證程式碼的異常完備性方面非常有用。

9. 斷點棧軌跡

在閱讀netty原始碼的過程中,我最喜歡的功能就是使用IDEA的呼叫棧迅速瞭解某段程式碼執行的上下文環境,呼叫棧被掛起之後,只需要動一動上下方向鍵,就可以快速熟悉這段程式碼的執行路徑。
9
新版本中,如上圖,IDEA對breakpoint的功能得到進一步的增強,讓你的斷點除錯在控制檯留下軌跡,每經過一個斷點,都會在控制檯打印出這個斷點的呼叫棧,下次,可以不用除錯你就能知道斷點處的程式碼原始的呼叫鏈是什麼。

10. 更強大的全域性文字替換

10
IDEA對文字的處理可以說是相當強悍了,無論搜尋還是替換,可以自定義範圍,檔名,甚至支援預覽效果。新版本對全域性文字替換功能進行進一步的擴充,上圖展示的是,你想把所有 xxController檔案替換成 xxProducer,直接上兩段正則表示式就可以迅速完成,並且在視窗下方實時預覽修改後的效果。

11. SpringBoot整合進一步優化

IDEA和Spring的整合可以說是天衣無縫,Spring IOC和AOP的特性在IDEA中得到了充分的視覺化體現,無比強大的關聯功能讓人歎為觀止,詳細可以翻到文末我錄製的視訊。
11
新版本更是對SpringBoot的整合達到了一種登峰造極的程度。上面圖展示的是,當你的SpringBoot應用啟動之後,在所有對外提供API的方法,你都可以直接點個滑鼠就可以發起HTTP呼叫,發起HTTP呼叫有兩種方式:
- 種方式是直接發起呼叫,不用手動輸入url,呼叫之後結果直接展示在控制檯
- 另外一種呼叫方式更為強大,IDEA給你自動給你生成一個.http檔案,這個檔案裡面,你可以自定義http請求的引數,url,並且每一次呼叫的結果都儲存為一個文字檔案,甚至可以進行呼叫結果的對比。

12. git部分提交與changelist

IDEA對git的視覺化支援以及各種快速便捷的操作在程式碼衝突解除、開原始碼歷史版本追溯、code review發揮了強大的作用,你根本不需要第二個視覺化版本控制工具。在IDEA的版本控制管理的概念裡有一個changelist的術語,指的是,你可以把每一處更改扔到不同的變更集合裡,提交程式碼的時候,你可以選擇不同的變更集合進行提交,剩下的變更集合,變更還在,但是不會提交到倉庫中。這個應用場景是,比如,你遇到一個新專案,想快速瞭解這個專案,你可以隨意做修改,把這些修改扔到一個自定義的changelist中,而在真正完成task的時候(一般剛開始接觸新專案,實現的需求都比較簡單,幾行程式碼搞定),把需求實現的變更集進行提交即可,之前的實驗程式碼可以留在你的專案中,你可以進一步地做實驗。

12

本次版本的更新,細粒度版本控制得到了進一步的增強,上面這幅圖展示的是,你在提交程式碼的時候,視窗右半側左邊欄,每一處改動都會有一個單選框,如果你在code review的時候,不想提交某一處改動,只需要把前面的單選框取消勾選即可,這樣,結果就是,程式碼還在本地專案中,但是不會提交到版本庫。
13

此外,你還可以把你不想提交的程式碼扔到一個自定義changelist裡,程式碼還在,但是不會提交,如上圖。

13. git歷史記錄增強

在閱讀netty原始碼的過程中,有的時候我會發現註釋和程式碼邏輯牛頭不對馬嘴,於是,我使用了IDEA的git歷史記錄功能之後發現,原來這段註釋是應用在很久之前的程式碼上的,老程式碼註釋一直未刪除,這也說明了你在閱讀開源專案的時候,不要盲目相信權威,要多思考,要相信自己的判斷。
14
本次git的歷史記錄的增強,指的是,你在閱讀某個版本的程式碼,想了解這個版本中的某一個檔案的提交歷史,你可以直接在這個檔案上右鍵,然後檢視針對當前版本,檢視這個檔案的提交歷史,所有的改動一覽無餘。

14. 彈出式javadoc

15
對的,新版本IDEA終於支援彈出式java doc了,當你滑鼠放到某個方法,引數,型別上去的時候,自動給你彈出對應的文件的解釋,並且給出文件表現形式是經過美化的。

15. Kubernetes支援

16

IDEA之所以如此優秀,是因為jetbrain一直會關注行業的最新動態,迅速實現對java生態圈中熱門技術的整合。我記得當年Docker剛火起來的時候,IDEA就已經開始對Docker的整合了,並且在每個版本里面迅速迭代,目前IDEA對docker的支援已經做得非常出色了。
17
上圖展示的是IDEA對Kubernetes的支援,只敲了幾個字母,一個Kubernetes資原始檔模板就生成了,然後,一個批量編輯,游標自動定位,一個完整的資原始檔就已經寫完了,IDEA在2018.1版本中對Kubernetes的支援做了非常多的增強,感興趣的同學可以看下官網部落格的專題介紹

結束語

以上就是我對本次 IntelliJ IDEA 2018.1版本更新的解讀,如果你非常迫切想提升開發效率,提升程式碼質量,可以閱讀我總結IntelliJ IDEA 系列文章

歡迎關注博主公眾號:Java十分鐘
歡迎關注博主公眾號