本篇文章內(nèi)容轉(zhuǎn)載來(lái)自微信公眾號(hào)"Mac Talk”,此公眾號(hào)由極客時(shí)間的創(chuàng)始人池建強(qiáng)老師維護(hù),池老師的文章寫作風(fēng)格非常幽默風(fēng)趣且樸實(shí)無(wú)華,對(duì)蘋果Mac軟件、產(chǎn)品設(shè)計(jì)、程序開發(fā)等領(lǐng)域有著深入的研究和新穎獨(dú)特的見(jiàn)解。
上一遍文章我介紹了IDEA的入門及使用體驗(yàn),目前我用的是IDEA 2018.1版本,這不JetBrains最近更新了最新2018.2版本,于是乎池老師很快就發(fā)布了新版本的升級(jí)特性介紹,最初我也想自己了解下新特性順便寫一下這方面的東西,但是看完池老師從InfoQ中文網(wǎng)站重新校對(duì)和修改之后的這篇文章,我就覺(jué)得寫的特別的好,且最近難得一次見(jiàn)到池老師在文末未打軟廣,說(shuō)實(shí)話這波吃雞吃的我猝不及防,原文轉(zhuǎn)載如下:

題圖:酒杯里的代碼,自己拍的
我自己編程生涯里寫 Java 比較多,常用的編輯器是 Vim 和 IntelliJ IDEA。Vim 免費(fèi)輕快,像一把雪亮的快刀,擋著披靡。IDEA 厚重強(qiáng)大,華麗的像關(guān)二爺?shù)那帻堎仍碌?,鋒利無(wú)匹。各有各的好處,我都非常喜歡。近期 JetBrains 發(fā)布了 IntelliJ IDEA 的最新版本:2018.2,其中包含了諸多新特性,我第一時(shí)間更新了(IDEA 現(xiàn)在是付費(fèi)訂閱方式),給大家介紹下。
IDEA 的新版本支持即將推出的 Java 11、斷點(diǎn)意圖(Breakpoints Intentions),為 MacBook 系列的 Touch Bar 定制了快捷功能,并改進(jìn)了 Spring Boot、Scala 和 Docker 相關(guān)的插件。
以下內(nèi)容編譯自極客邦 InfoQ 中文網(wǎng)站,我重新做了校對(duì)和修改
Java
IntelliJ IDEA 2018.2 支持 Lambda 參數(shù)使用的本地變量新語(yǔ)法(即?JEP 323?)。這是定于 11 月推出的 Java 11 中的一個(gè)新特性。該特性支持開發(fā)人員在 Lambda 表達(dá)式中使用變量聲明關(guān)鍵字 var:
//Java 8,不支持var。?
BiConsumerconsumer = (Processor x, String y)x.process(y);
//Java 11,支持var。
BiConsumerconsumer = (var x, var y)x.process(y);
為配合 Java 11 對(duì) var 的支持特性,在 IDE 中按住 “Ctrl/?” 鍵并將光標(biāo)駐留于 var 上,將會(huì)顯示該變量的類型。
對(duì)于代碼中冗長(zhǎng)的方法鏈,IntelliJ IDEA 將會(huì)給出類型提示(Type Hint)。面對(duì)具有泛型的長(zhǎng)方法鏈時(shí),開發(fā)人員可通過(guò)該功能查看每個(gè)調(diào)用的類型提示。
2018.2 為使用重構(gòu)方法增加了一個(gè)預(yù)覽面板,它有助于開發(fā)人員在確認(rèn)更改前查看重構(gòu)的可能情況,酷炫并且實(shí)用。
IntelliJ IDEA 改進(jìn)了對(duì)?@org.jetbrains.annotations.Contract 標(biāo)注的支持。該標(biāo)注支持開發(fā)人員為特定參數(shù)的傳遞指定一個(gè)響應(yīng)方法,這將為 Nullability 分析以及其它一些代碼檢查提供幫助。其約束新增的支持值包括:new,方法應(yīng)該返回一個(gè)非 Null 的新對(duì)象;this,方法應(yīng)該返回一個(gè)非 Null 的 this ;paramX,方法應(yīng)該返回第 X 個(gè)參數(shù)。
Stream API 支持也做了改進(jìn),它將會(huì)顯示不必要的排序操作,以及錯(cuò)誤使用了收集器(Collector)或集合(Colleciton)。此外,如果你在 collect()(toSet()) 方法之前調(diào)用了多余的 distinct() 方法,它也會(huì)給出警告。
Java 項(xiàng)目中的調(diào)試功能也做了大量的改進(jìn)。如果開發(fā)人員組合使用 Alt+Enter 鍵,就能看到三種新的斷點(diǎn)狀態(tài),比如:stop only in class, do not stop in class, and stop only in the current object。此外,新的 Caller 過(guò)濾器可以允許開發(fā)者實(shí)現(xiàn)這樣的功能:只有來(lái)自某個(gè)特定方法里的調(diào)用,才會(huì)停在這個(gè)斷點(diǎn),或者跳過(guò)這個(gè)斷點(diǎn)。
用戶界面
新版本還交付了一系列用戶界面上的改進(jìn)?,F(xiàn)在 IDEA 開始支持 MacBook 的 Touch Bar,在 Touch Bar 界面的中間顯示 TouchJ IDEA 按鈕。開發(fā)人員可以直接從 Touch Bar 運(yùn)行、調(diào)試、提交更改和更新項(xiàng)目。對(duì)于 macOS上 的IntelliJ主題,現(xiàn)在支持以更暗方式顯示標(biāo)題欄,并添加了一些新的圖標(biāo)。Linux 上的 IntelliJ 主題也做了一些更新。
Scala
IntelliJ IDEA 對(duì) Scala 插件做了多項(xiàng)改進(jìn)。它支持開發(fā)人員以內(nèi)聯(lián)提示的方式查看隱式轉(zhuǎn)換和參數(shù),并在提示工具(Tooltip)中瀏覽和顯示擴(kuò)展信息。現(xiàn)在,Scala 插件中添加了 Scalafmt 格式化工具。配置 Scala 插件,可依次點(diǎn)擊菜單項(xiàng) “Preferences/Settings”>“Editor”>“Code Style”>“Scala”。
類型標(biāo)注的自動(dòng)完成和模式匹配功能也做了改進(jìn),Scala 插件會(huì)對(duì)類和接口給出一組建議的類型模式,參見(jiàn)下圖:
JavaScript/Typescript
2018.2 還改進(jìn)了對(duì) JavaScript 和 TypeScript 的支持。開發(fā)人員可以使用新的 Extract Component 特性新建一個(gè) React 組件,使用新的 Code Coverage 特性找到?jīng)]的 JavaScript/TypeScript 代碼,并對(duì)代碼進(jìn)行手工測(cè)試。開發(fā)人員可以使用 Code Coverage??啟動(dòng)一個(gè) JavaScript Debug 配置?,并與 Chrome 中的應(yīng)用進(jìn)行交互。配置完成后,IntelliJ IDEA 會(huì)在 Coverage 工具窗口中給出代碼覆蓋情況報(bào)告。
新版本 IDEA 提供了一系列 JavaScript 和 TypeScript 提示,比如實(shí)現(xiàn)接口、創(chuàng)建派生類、實(shí)現(xiàn)接口或抽象類的成員、生成 switch 語(yǔ)句中的 case,以及使用 “for..of” 實(shí)現(xiàn)迭代運(yùn)算等。
Spring
新版本 IDEA 增加個(gè) Spring Integration Diagram,基于 XML 或 Java 標(biāo)注圖形化顯示 Spring 應(yīng)用的配置情況,包括gateway、channel 和 bridge 等。
2018.2 版本還針對(duì) Spring Boot 應(yīng)用做了系列改進(jìn)?;谛碌?Diagram Model 開發(fā)人員可以用圖形化的方式顯示 Spring Boot 應(yīng)用運(yùn)行時(shí) Bean 之間的依賴關(guān)系。開發(fā)人員還可以通過(guò) Run Dashboard 管理 HTTP 請(qǐng)求映射。
Docker
IDEA 的 Docker 插件日漸成熟。新支持的特性包括支持以軟回車的方式查看 Docker 日志(wrap word)。開發(fā)人員也可以從 Compose 節(jié)點(diǎn)和容器查看對(duì)應(yīng)的 Compose 和 Docker 文件。此外,你還可以定義 Dockerfile 的執(zhí)行根目錄。
IntelliJ IDEA 是一個(gè)極為強(qiáng)大的 IDE 工具,不僅可以開發(fā) Java,基于插件機(jī)制可以編寫各種語(yǔ)言的代碼,快速、強(qiáng)大、敏捷,是 JetBrains 的當(dāng)家軟件,其他系列 IDE 都衍生于此。貴是貴,確實(shí)好用啊。
文末留言:你最喜歡的編程工具是什么呢?你最常用的編程工具又是什么?可以說(shuō)說(shuō)它們的優(yōu)劣。