如何高效地使用IntelliJ IDEA
本文轉(zhuǎn)載自微信公眾號「BAT的烏托邦」,作者YourBatman。轉(zhuǎn)載本文請聯(lián)系BAT的烏托邦公眾號。
正文
我如何高效使用IDEA?
鑒于事實,我在文首還是先介紹下自己使用IDEA吧。不過話說在前頭,任何時候都是人外有人,天外有天,我寫的所有文章、教程、做的所有視頻都僅限于我當時所處的認知范疇,絕不代表最好、最深。
由于我個人比較注重工具的使用,所以我對每次自己寫出來的代碼不管是排版、還是質(zhì)量、還是寫代碼的效率都非常自信,這種效率提升IDEA功不可沒。還有每次我在公司內(nèi)分享,很多時候都會一字一句的現(xiàn)場編碼實時演示,卻一點都不怯場,這很大程度上也來自于我對IDEA的熟練掌握。
可能一不小心點破了一個小現(xiàn)象:很多時候(特別是較小范圍分享時)不是主講人不編碼給你看,而是編碼容易露餡出自己連“飯碗”都用得不太熟練的尷尬
筆者2015年8月入行的是一家外包公司(關于筆者送外賣->程序員轉(zhuǎn)行經(jīng)歷,有興趣的可點這里),用的MyEclipse 10,就是它,現(xiàn)在回看是古董了有木有:
離開第一家公司后開始用STS(Spring Tools Suite),當時其他同事都用Eclipse而我用STS,因為對Spring框架的支持度更好:
直到2017年8月份,在新公司第一次接觸到IDEA。
這里面還有個小插曲:剛開始接觸使用IDEA時感覺十分不順手,所以在長達1個月多月的時間里我都是STS + IDEA雙用:
- 在STS上開發(fā)、看代碼
- 在IDEA上拉取代碼、提交代碼
果不其然,出問題了:我不小心把eclipse工程的相關文件提交到了git倉庫,導致組內(nèi)其他人拉取代碼時出現(xiàn)了一系列莫名其妙的問題,浪費了他人時間。我深刻記得當時被領導和一些同事直呼業(yè)余!!!當時寶寶心里很苦,心里還在反抗:STS/Eclipse這么好用還免費為啥偏要用IDEA呢?
殊不知,那會IDEA早已全面超過Eclipse,這個歷史背景在我這篇文章里有提及:
為此,我痛定思痛完成自己學習后,就逐漸開始了我的IDEA“布道”之路:向個人、團隊內(nèi)、公司內(nèi)分享這個Java程序員開發(fā)利器。IDEA作為一款IDE(集成開發(fā)環(huán)境),功能不可謂不強大,缺的就是你的探索。
對我自己而言,最能提升我效率的主要有亮點:
- 快捷鍵
- 主題
快捷鍵
早些年如果你對在命令行里敲來敲去的同學心生羨慕,那么在工程開發(fā)場景下應該會對快捷鍵使用666的同學贊嘆不已。
快捷鍵我們天天都在用,畢竟這幾個鍵大家都很熟:
對我而言,我覺得快捷鍵對提升開發(fā)效率是立竿見影的,它就是一種捷徑。所以在我學IDEA的那會,會用有道云筆記記錄下我用的快捷鍵,有70+個“之多”:
我最常用的大概有近50個,經(jīng)過幾年的反復“練習”,這50個已經(jīng)形成了肌肉記憶,對我效率提升非常大。
Tips:任何事情不是越多越好??旖萱I也是一樣,只有常用,快捷鍵設置得才具意義。
主題
如下圖,這是我正在使用的IDEA主題。
2012年2月,IntelliJ IDEA發(fā)布了暗黑主題,瞬間提升了工程師的B格,從此找女朋友好像容易了許多。正所謂外行看熱鬧,內(nèi)行看門道,主題絕不能說明一個工程師編程水平的高低,但為何我覺得它是我的提效利器呢?
我當然同意主題不能代表工程師的編程水平,但并不妨礙它幫我提效。這個主題樣式其實是從我開始使用MyEclipse就一脈相承過來的,我先說說它對我的幫助:
- 我喜歡暗色調(diào),所以暗色調(diào)整體看上去我會覺得舒服
- 顏色都是我自己定制,所以整體呈現(xiàn)出來是我最喜歡的格調(diào)
- 每個顏色自己會說話。這是最最最重要的一點,比如以我的主題為例:
- 純黑色:interface接口
- 灰黑色:abstract抽象類
- 淺灰色:@annotation注解
- 綠色:class類
- 粉色:成員屬性
- 紅色:定義局部變量
- 紅色+斜體:使用局部變量
- .......太多了,不用一一例舉
快捷鍵和主題是對我提效幫助最大的兩方面,當然還有很多其它較小的方面的設置。文后我會將我這么做的一些思考和建議分享給你,供你參考,酌情取之。
為什么有的大神認為使用記事本寫代碼很牛逼?
這源自知乎上的一個提問:
其中有幾個回答我覺得還蠻有意思:
- 能跑馬拉松的人自然比開車42公里的人牛逼。但是你出門走42公里不開車用跑的那就是SB了...
- 啊?為什么不是有的 菜鳥 認為用記事本寫代碼很牛逼?大神 才沒空關心這些呢...
- 實在沒有IDE可用的情況下能用記事本熟練coding,確實nb。放著IDE不用非要用記事本coding顯示自己多nb,大神也sb??倳幸恍┬“讓Υ笊駛冊跇O端情況下的無奈之舉頂禮膜拜,為虛榮心強的大神披上了皇帝的新衣
- ......
總之我覺得,如果能在記事本上飛舞的碼代碼的大神,那么使用IDEA這種工具的話它的效率99.9999%可能性會更高。我記得曾經(jīng)有個讀者跟我私聊,說面試官讓他在紙上(或者在電腦上用記事本)寫一個控制臺輸出hello word的程序,要求很簡單:能javac直接編譯運行。然后,他掛了!
可能有人會覺得問這種面試題沒有意義,畢竟沒有人會在記事本上寫Java。但誰讓現(xiàn)在面試就是這么卷呢?作為開發(fā)工程師,最終不就是拼這些么,正如郭德綱所說:相聲拼到最后拼的是文化。
為什么IDEA“不卡”?
IDEA和Eclipse哪個更好,這似乎是一個沒有標準答案的提問,但市場會給出解答。在我細目中,那必然是IDEA更好,還是用我有道云筆記上記錄的一句話來解釋:
(相對)不卡,解決方案一般只有一個:大量使用內(nèi)存,用空間換時間。所以IDEA吃內(nèi)存不是蓋的(只打開了2個項目):
在現(xiàn)在存儲價格越來越低的趨勢下,這么做顯然是值得的,蘋果系產(chǎn)品也是這樣為之??纯茨愕膇Phone、iPad、Mac是不是內(nèi)存長期占用85%以上高居不下。不同于CPU的算力,內(nèi)存這種資源,不用也就等于浪費。
為此,開發(fā)者均愿意為此買單而擁抱IDEA。當然啦,內(nèi)存大了怎么使用也是很重要,這就是IDEA與Eclipse拉開差距的“核心競爭力”了:索引。
無處不在的索引
作為程序員,對索引二字我們并不會陌生。比如最長接觸的數(shù)據(jù)庫索引:只有SQL慢,加索引一般能解決90%以上的問題;還有比如Mac的文件搜索系統(tǒng)索引:
索引有兩個明顯的特點:
- 能夠大大提高查找的效率
- 只需創(chuàng)建一次
- 創(chuàng)建時往往比較耗時(數(shù)據(jù)越多越耗時)
在IDEA里,當打開一個新項目 or 點這個按鈕重新啟動時:
你一般會經(jīng)歷一個較為“漫長”的建立索引過程,這個過程一般是阻塞式的,你什么都干不了(新版本的IDEA對此有優(yōu)化,有些步驟可并行):
為當前工程的文件,建立索引
為Spring體系依賴建立索引
為其它依賴建立索引
為JDK建立索引
這個過程可能比較耗時(項目越大、依賴越多就越耗時),并且十分耗CPU資源,所以這個時候你的CPU風扇很可能會高速轉(zhuǎn)起來,就像這樣:
正因為IDEA創(chuàng)建了這么多的索引,所以代碼提示、懂你的智能提示、代碼自動修復等就成為了可能,最終給與你的體感就是IDEA好像不怎么卡!
正確使用IDEA的姿勢和思考
下面我僅結(jié)合自己的理解,給些比較常用的、IDEA的最佳實踐以及我的思考,供以你參考,酌情獲取。
查找類class
這個功能是最常用,同時也是我最想拿出來說的。說實在話,我眼睛看到的幾乎一半 同學想要找到某個class類時,用的它:
不知看到這個搜索結(jié)果你會是什么感覺?明明只需要找到Application這個類,為毛搞出這么一大片搜索結(jié)果呢?看得人眼花繚亂~
這當然不能怪IDEA,是你姿勢不對嘛。這個功能叫全文檢索,也就是說只要標題/內(nèi)容包含關鍵字就匹配,它的能力非常強大,同時也相對來講更耗性能,更容易造成電腦卡頓。
注意:該搜索只搜索內(nèi)容,不搜索標題/文件名。好在一般來講Java中的類
顯然用它查找class類并不合適,干擾項特多了。最佳實踐應當是它(Navigate -> Class...):
它專用于檢索查找class類(包括內(nèi)部類)源文件(也就是.java源文件)。默認情況下找的是當前project,若要查找jar包里面的類(如JDK、Spring里的),僅需點擊右上角改變查找位置即可:
新版本的IDEA越發(fā)聰明了,好似能做到自動切換,想你所想,大部分情況下都是準的。若需要切換,我還是建議你用快捷鍵完成快速切換而不是用效率較低的鼠標。
總的來講,用這個功能來查找class類效率最高,并且最為精準,所以是最佳實踐。
查找文件file
舉個例子:我們經(jīng)常遇到要找到application.properties/yaml配置文件去寫配置,一種方式是一層一層的打開文件夾,另一種當然是更快的方式:查找嘍。
這個時候,很多同學依舊拿出自己的“全文檢索”:
woho,不靈了!原因其實上面已經(jīng)提到了:這個搜索只檢索內(nèi)容,而不檢索標題。
所以你可以用下面這個方式,它才是最佳實踐(Navigate -> File...):
畢竟大部分時候我們都是根據(jù)文件名而非文件內(nèi)容去找文件。
Project視窗放在右邊
如果說上面兩項是我的“強制”建議,那么這個只是我的一個小小建議,請根據(jù)個人習慣參考使用。
看到下面這張圖,不知你作何感想:本來諾達可視區(qū)域,代碼區(qū)域竟只剩1/5左右了。
據(jù)我所知這是很多開發(fā)同學的常態(tài),特別是在debug斷點調(diào)試的時候,可視區(qū)域可能更小。好不容易買塊外置顯示器大屏幕...
雖然說這和個人窗口管理的習慣有關(有人愛整潔,有人邋遢嘛),我這里推薦一個把project視窗放在右邊(一般左邊也只會放project,所以這里我只強調(diào)project視窗哈)的解決方案。我的理由如下:
- 第一點,也是最重要的一點。它能讓最重要代碼區(qū)域具有穩(wěn)定性。我們都是從左向右寫代碼,而每行代碼的長度一般是不會太長的,因此大部分情況下代碼區(qū)域的右邊會大量留白,所以理應利用起來
- 第二點,視窗都放在右邊,能確保代碼區(qū)域的視覺穩(wěn)定性。若視窗在左邊(如project視窗),我們把它收起or展開,會讓代碼區(qū)域一會左移一會右移,視覺上也更容易累些
- 第三點,幾乎沒有視窗需要一直獨占空間區(qū)域,所以放在一邊管理起來,共享性會更好。從而就可以省出更多空間區(qū)域用于顯示代碼
當把視窗統(tǒng)一放在右邊后,代碼顯示區(qū)域得到明顯提升(且更穩(wěn)定),即使是debug也不怕:
當然,當然,當然,一切以你的習慣為準。
云化自己的IDEA配置
IDEA從下載下來,到順手的使用,需要做的步驟其實還是比較多的。比如:
- 字體大小
- 字體風格
- tab風格
- 關閉拼寫檢查
- 智能提示是否區(qū)分大小寫
- 單行函數(shù)
- 自動折疊
- ...
這些小配置設置起來不難,花點時間弄弄即可。但是,若:
- IDEA卸載(干凈)重裝
- 換臺電腦
對于失去的已經(jīng)習慣了的配置,是不是想死的心都有了?還好IDEA有配置導出的能力,可以導出一個jar包,新的IDEA導入這個jar即可。但更安全、方便的辦法是將配置云化。
起初IDEA還不支持云存儲的時候(沒記錯的話應該是2019年6月之前的版本),我的做法是把這個jar云存儲起來,我就是放在有道云筆記里的:
現(xiàn)在好了,IDEA支持云存儲了:
它支持兩種方式:
跟著JetBrains賬號走
- 優(yōu)點:最方便
- 缺點:畢竟是墻外的服務器,速度堪憂
自定義一個倉庫管理
- 優(yōu)點:墻內(nèi)有碼云、CSDN等都可以提供免費倉庫
- 缺點:需要配置一個倉庫地址
很明顯,我選擇了方式2
為自己定制一款主題
IDEA已經(jīng)內(nèi)置了多款主題:亮色和暗黑色
本文上部分介紹了主題對我開發(fā)效率的提升,希望能給你帶來啟發(fā)。
當然嘍,主題和皮膚一樣,蘿卜白菜,各有所愛,所以各位同學酌情考慮。
考慮到確實有不少同學“喜歡”筆者這個主題,所以我把它公開了,有需要的同學公號后臺回復:IDEA主題,即可獲得。
總結(jié)
IDEA作為Java程序員每天都在用的工具,我還是建議可以專門的花點時間造一造,畢竟,磨刀是不誤砍柴工的。
這篇是比較籠統(tǒng)的介紹了IDEA的一些實踐經(jīng)驗,還有很多細一點但非常好用、強大的功能點會在這個IDEA專欄里分享給你,比如代碼分析、代碼檢查、代碼自動優(yōu)化等,最終分享給你《我是如何高效的用IDEA保證團隊代碼質(zhì)量的》,感興趣的敬請關注。