IntelliJ IDEA 特性集合

jopen 10年前發布 | 49K 次閱讀 IntelliJ IDEA

在這篇文章中,我想向您展示 IntelliJ IDEA 中最棒的 20 個代碼自動完成的特性,可讓 Java 編碼變得更加高效。對任何集成開發環境來說,代碼的自動完成都是最最重要的一項功能,它根據你輸入的內容進行預判并幫你自動完成你想輸入的代碼,有時候甚 至都不知道自己想要輸入什么,例如一些類名、成員、方法或者是其他方面的內容。

IntelliJ IDEA 中的代碼自動完成的功能之所以能讓我如此印象深刻,原因是 IDEA 真的理解你的代碼以及你當前所在的上下文。接下來我們將這些最重要的特性進行簡單的說明,這些特性讓 IDEA 顯示出比其他 IDE 更棒的表現。

即刻完成 Instant completion

第一個也是最吸引我的就是“即刻完成”特性,不同于其他 IDE,IDEA 可在任意地方提供這個功能,而不只是當你要訪問某個類的成員時。只需要輸入單詞的首字母,IntelliJ IDEA 就會立即給出最相關的、最適合此處代碼編輯需要的選項共你選擇。

IntelliJ IDEA 特性集合

想要了解“即刻完成”是多么的有效,你可以瀏覽這個 演示視頻. 

類型感知的自動完成 Type-aware completion

另一個特性同樣打破了常規的代碼自動完成的方法,稱為:智能自動完成。你可能已經知道,IDEA 中包含不止一種自動完成的功能,包括 基本自動完成 ?Space 和 智能自動完成 ??Space.

當你呼出 智能自動完成 時,它會將建議列表中的不適用的條目過濾掉,只顯示可用的類、變量、屬性或者方法,這個提升了性能而且可以避免不必要的錯誤,如果你試用下這個功能,你肯定會時刻想到它。

IntelliJ IDEA 特性集合

靜態屬性和方法 Static fields and methods

就如同剛才我說的,IDEA 一直走在你的想法之前。如果你不記得一些靜態成員的類名,你只需要開始輸入靜態成員的名稱,然后調用兩次“自動完成”,IDEA 會給你提供正確的可供選擇的列表,甚至是通過靜態 import 進來的方法,如果你調用 Intention action ?? 的話.

IntelliJ IDEA 特性集合

再一次說明,如果你使用 智能自動完成, 它將只提供可正確使用的選項。

鏈式自動完成 Chain completion

接下來的一個可讓你更多的提升編碼效率的自動完成特性,名為 鏈式自動完成(Chain completion). 如果你需要輸入這樣的調用方法 getModule().getProject(),只需要使用兩次 Smart completion 即可。這種情況下 IDEA 將掃描變量、屬性和方法,以及在當前上下文中的可見性,并為你提供可用的選擇。

IntelliJ IDEA 特性集合

你可能知道 Eclipse Juno 有一個名為 Code Recommenders 的插件,這是一個相當有意思的插件提供了這里說到的功能,但它的工作方式完全不同,只提供 Eclipse SDK API 類中的建議,而 IDEA 為你提供你代碼中所有類的自動完成建議。

數據流分析 Data flow analysis

IntelliJ IDEA 被稱為是最智能的 Java IDE 的原因是,IDEA 提供的各種功能都是基于對你代碼分析的結果,數據流分析就是其中一項。IDEA 分析數據流以便猜測運行環境中的變量類型,并提供基于這個類型的自動完成以及自動增加類的強制類型轉換。

IntelliJ IDEA 特性集合

常量自動完成 Constants completion

很多 API 使用 Java 的原始類型而不是枚舉類型來定義常量,IDEA 能分析出項目中的這些常量,并在自動完成的建議列表中提供選擇,快速輸入。

IntelliJ IDEA 特性集合

父類自動完成 Super completion

你可能已經注意到了,要調用一個有很多參數的父類構造函數挺煩人,而 IDEA 能理解你想要的并提供建議列表供選擇。

IntelliJ IDEA 特性集合

語句自動完成 Statements completion

IntelliJ IDEA 另外一個智能的特性就是 自動完成語句 Complete statement ???, 可以幫你完成正在輸入的語句的剩余部分,自動增加漏掉的大括號小括號和必要的格式化處理。

你可能認為這是一個很小的特性,但你會很驚奇的發現當你習慣后,它節省你很多時間。

想試試這個特性可在代碼中嘗試輸入 if 然后按 ???. 你也可以在從建議列表中選擇的時候使用。

參數信息 Parameter info

我相信大多數的 IDE 在你調用某個方法或者構造函數時都提供了參數的建議,然后如何提供的也是非常重要。

IntelliJ IDEA 會顯示每個重載方法或者構造函數的參數信息,并高亮其中最佳匹配的參數類型。這幫你根據輸入和期望的內容來選擇合適的方法。

IntelliJ IDEA 特性集合

你也可以通過 ?P 來顯示參數信息。

快速定義 Quick definition

另外一個你可能不知道的特性就是 快速定義 Quick definition ??I. 它會彈窗顯示建議列表中的方法定義的內容,更多的時候,方法的定義比文檔更有用,特別是你不確定要使用哪個方法時。

IntelliJ IDEA 特性集合

從自動完成中排除 Exclude from completion

我肯定每個人都至少會碰到一次這種情形,你從來不用的某個反復總是反復的出現在自動建議列表中。例如 com.sun 或者是 java.awt 包。

IntelliJ IDEA 可幫你排除掉這些選項,只需要在要排除的選項中調用 Intention ?? 并確認,你也可以在 Settings 中重新找回這些信息。

IntelliJ IDEA 特性集合

其他語言注入 Injected languages

接下來的這個就不管是代碼自動完成那么簡單,這個功能完全可以開一篇新的文章詳細介紹,但這里只介紹它跟代碼自動完成有關的部分。

其他語言注入 Language injection 是 IntelliJ IDEA 帶來的高級代碼助手,可對 Java 代碼中字符串的表達式進行自動完成。這些表達式可以是 SQL, JPQL, XPath expression, HTML, CSS, JavaScript 片段等任何語言。

IntelliJ IDEA 特性集合

在 IntelliJ IDEA 提供這些表達式的自動完成功能前,你必須指定對應的語言,你可在字符串上調用Intention action ?? 來設置,然后方可使用。

例如你在 IDEA 中定義了一個數據源,你將可使用基于表名的 SQL 表達式的自動完成,該 IDE 會分析項目中所有的文件并提供所支持語言的高級自動完成功能。

使用 Tab 鍵的自動完成 Completion with Tab

另外一個特性就是 Сompletion with Tab,也就是使用 Tab 鍵來實現自動完成,當你選擇建議列表中的某個條目后點擊 ?, 選中的內容將會覆蓋光標標識符,而不是插入。這在編輯如文件名這樣的標識符片段時是很有用的。

否定布爾值結果 Negating boolean results

并不是所有人都知道,當你從建議列表中使用 ! 來選擇一個布爾值的選項時,IntelliJ IDEA 會自動添加所選項的的非值(例如本來是true的變成false)。

中間匹配 Middle matching

另外一個高效的方法就是 中間匹配 Middle matching. 意思是當你在剛開始要輸入某個標識符時,IntelliJ IDEA 就會為你提供可供選擇的建議列表,這個特性能顯著提升編碼效率,特別是當你只記住某個名稱的一部分時。

IntelliJ IDEA 特性集合

大小寫敏感設置 Case sensitivity settings

正如你可能已經知道的,代碼完成常用的方法就是使用駝峰法則來根據您的輸入去匹配相應的類名。雖然你需要輸入至少一個大小字母來給 IDE 一些線索提示。而 IntelliJ IDEA 改進了這個法則,它不要求一定是大小字母,也可以是小寫的,也就是說你沒必要在每次使用這個功能時按 ?

IntelliJ IDEA 特性集合

默認 IntelliJ IDEA 對大小寫是敏感的,你可以在 Settings 修改此項設置。

資源屬性(properties)、文件名和資源的自動完成

IDEA 還可判斷當前正在使用一些加載資源的方法,并給出可供選擇的資源列表。

IntelliJ IDEA 特性集合

一些在非 Java 文件中的類名自動完成 Class name completion in non-Java files

IntelliJ IDEA 同樣還提供一些非 Java 文件,如 XML 配置文件中的類名自動完成。

IntelliJ IDEA 特性集合

其他地方的自動完成 Completion in other places

另外一個你在別的 IDE 中很難見過的自動完成功能是,它不只是在代碼編輯器中,還可用在調試器、表達式模擬、監視、文件選擇器、搜索輸入等等諸多地方使用。

IntelliJ IDEA 特性集合

表達式評估和監視工具中的自動完成這個功能是非常有價值的。

總結

我希望這篇文章能幫你更好的理解 IntelliJ IDEA 的代碼自動完成特性,并從中受益。

你可以通過 Help → Productivity Guide 來了解更多的自動完成的類型以及 IDEA 已經幫你節省了多少時間(這個有點意思)

IntelliJ IDEA 特性集合

來自:地址:http://www.oschina.net/question/12_70799
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!