為何 IntelliJ IDEA 比 Eclipse 更好[轉(zhuǎn)]

圣戰(zhàn)
有一些沒(méi)有唯一正確答案的“永恒”的問(wèn)題,例如哪個(gè)更好:是Windows還是Linux,Java還是C#;誰(shuí)更強(qiáng)壯:Chuck Norris還是Van Damme。
其中的一個(gè)圣戰(zhàn)便是Java IDE的選擇:

Intellij VS Eclipse

有許多爭(zhēng)論的話題是討論它們哪個(gè)有更多的插件、快捷鍵等等。它們之間有太多的不同而很難決定什么才是最重要的。
因此,人們都表示兩個(gè)IDE在功能性上都差不多,選擇某一個(gè)則是個(gè)人喜好問(wèn)題了。
我認(rèn)為這不僅僅是個(gè)人喜好的問(wèn)題,有客觀的原因能表明:Intellij IDEA 肯定比Eclipse更好.
我不會(huì)去大量比較兩者細(xì)微不同,例如插件與快捷鍵之類的。因?yàn)橛幸幌盗械腷log是關(guān)于這些的。我將會(huì)展示IDEA與Eclipse的一個(gè)最大的不同之處。通常IDEA和Eclipse的fans都不曾了解。前者已經(jīng)習(xí)慣性的使用著它而不曾想象IDE缺少它會(huì)怎樣,后者則沒(méi)有使用它的習(xí)慣且難以想象有了它IDE能做得這么好。Eclipse的用戶在把玩IDEA的時(shí)候通常都不會(huì)意識(shí)到這個(gè)不同點(diǎn),因?yàn)樗麄兞?xí)慣了以Eclipse模式工作。
為何我如此確信?
在開始說(shuō)明之前,讓我解釋一下我是誰(shuí)和為什么我的觀點(diǎn)值得一聽(tīng)。
我使用Eclipse已經(jīng)5年之久,我很了解它,我為它編寫插件并真心地喜愛(ài)它。然后,我換了一個(gè)公司工作,并被強(qiáng)行轉(zhuǎn)移到IDEA上開發(fā),在這次“分手”后,我才最終意識(shí)到為什么IDEA更加敏銳。而如今我我已經(jīng)使用IDEA一些年了,所以我能比較它們兩者,因?yàn)槲伊私馑鼈儭?br> IDEA與Eclipse主要的不同
IDEA之所以更加敏銳的原因是:IDEA懂得上下文。這也是JetBrains員工命名IDEA為intelligent的原因。它真正的含義又是什么呢?IDEA檢索你的整個(gè)項(xiàng)目,分析項(xiàng)目所有的內(nèi)容,甚至構(gòu)建語(yǔ)法樹。幸虧有它,在任何時(shí)候無(wú)論你將鼠標(biāo)放置在哪里,IDEA都知道你在哪里并知道在那能干什么。
仍舊不了然?別擔(dān)心,在列舉了以下幾個(gè)例子后,一切就清楚了。
這種對(duì)上下文的理解表現(xiàn)在很多很多方式上,以下只是其中的一部分。

  1. 調(diào)試
    通常在調(diào)試過(guò)程中,我們想要求一些表達(dá)式的值,在Eclipse中你需要選定這個(gè)表達(dá)式,選定整個(gè)表達(dá)式非常重要,否則你就沒(méi)法求出它的值。然后,你可以使用Ctrl+Shift+I看到這個(gè)表達(dá)式的值。



    使用IDEA你不需要選擇任何東西,你只需要把光標(biāo)移到你的表達(dá)式中然后按下Alt+F8。IDEA會(huì)很好的理解這個(gè)你可能需要的表達(dá)式,然后顯示一個(gè)對(duì)話窗口,其中有一些它給出的建議參數(shù)變量。你也可以編輯并在對(duì)話框中立即將得到這個(gè)表達(dá)式的值。相當(dāng)?shù)姆奖悖≡囘^(guò)這個(gè)特性后,你就不會(huì)再想在Eclipse中調(diào)試了。



    基本上在兩個(gè)IDE上都能讓你做同樣的事,但是使用IDEA會(huì)更加簡(jiǎn)單和快速。對(duì)此我認(rèn)真的表示,這個(gè)差異太大了:就像天堂跟人間一樣。在一個(gè)小小的IDEA對(duì)話窗口中就提供了自動(dòng)完成,語(yǔ)法高亮以及你需要的一切。
  2. 自動(dòng)完成
    自動(dòng)完成使得IDE比notepad更加優(yōu)秀,在這個(gè)領(lǐng)域能感知上下文的IDEA有了質(zhì)的飛躍。例如,我們開始如下一行代碼:
    assertElement(By.id("errorMessage"), vi
    現(xiàn)在我們想要查找以vi開頭的選項(xiàng)有哪些。
    IDEA怎么做的呢?無(wú)需等待任何的按鍵,它馬上就能理解assertElement需要一個(gè)Conditaion類的示例作為第二個(gè)參數(shù),而在Condition類中有一個(gè)靜態(tài)變量名叫visible。IDEA會(huì)直接建議這個(gè)唯一的有效選項(xiàng)。



    然而,Eclipse會(huì)怎么做呢?唉,它不能理解上下文,它不知道光標(biāo)所在處就是assertElement方法的第二個(gè)參數(shù)。因此當(dāng)你按下“神圣”的Ctrl+Space時(shí),Eclipse只會(huì)簡(jiǎn)單的顯示全局中以vi字母開頭的一切。



    在一個(gè)美麗的彈出框中我看到了很多漂亮的高亮的格式規(guī)范的無(wú)用的信息.:(
  3. 重構(gòu)
    專業(yè)的程序員能夠高效的使用IDE提供的重構(gòu)功能。所有的現(xiàn)代IDE都提供許多印象深刻的重構(gòu)功能。但是還是那句,IDEA的重構(gòu)功能也很聰明智能。它們能讀懂你需要什么,然后針對(duì)不同的情況提供給你最適合的解決方案。
    例如,假設(shè)我們有一個(gè)assertErrorMessageIsHidden方法:
public void assertErrorMessageIsHidden() { 
    assertElement(By.id("errorMessage"), Condition.visible);}

我們以字符串“errorMessage”作為該方法的一個(gè)參數(shù)。
讓我們先從IDEA開始,將光標(biāo)放在任何字符串“errorMessage”上,按Ctrl+Alt+P(代表“parameter”),IDEA將會(huì)建議我們可能可以在哪些表達(dá)中用次字符串為參數(shù)。



當(dāng)“errorMessage”表達(dá)式被選定以后,IDEA將會(huì)建議一些可能的能用做該參數(shù)的變量名稱。



每月驚奇
你會(huì)經(jīng)常地驚訝于IDEA的聰敏表現(xiàn),比如它為你提示一些選項(xiàng)的名稱。它考慮到方法名稱,變量類型甚至是變量值,以及其他的此類變量的名稱,與之前你給定的此變量的名稱,除了忽略了你的生肖。相信我,你會(huì)想說(shuō)“Wow,IDEA也能這樣?”,我想說(shuō)至少每個(gè)月一次吧。

現(xiàn)在然我們看看Eclipse是怎么樣給出建議的。

別忘了,選擇整個(gè)"errorMessage"表達(dá)式哦。選擇一個(gè)“推薦參數(shù)”的重構(gòu)功能(通過(guò)菜單,沒(méi)有什么快捷鍵可供使用),獲得差不多相同的結(jié)果,然而,Eclipse不會(huì)給出變量名提示選項(xiàng),但幸虧不會(huì)。


結(jié)論
如果我們選擇Java IDE,那么Intellij IDEA肯定要比Eclipse好的。這不僅僅是個(gè)人喜好問(wèn)題。從客觀上看,IDEA更好。它是的你能夠快捷地編寫和修改代碼。它給出恰當(dāng)?shù)拿Q提示,查找適合的方法。它不需要你特別地選擇表達(dá)式便會(huì)猜測(cè)到你想要做的以及你想如何對(duì)它命名。IDEA預(yù)示著并給你提示。
P.S. Remarks
我認(rèn)為IDEA在作為Java IDE時(shí)確實(shí)比Eclipse更好。如果你考慮他們其他方面的能力例如用于其他例如C++、Python、Scala的IDE上,或者是作為構(gòu)建桌面的應(yīng)用的平臺(tái),Eclipse很有可能拔得頭籌。
事實(shí)上這是依賴于對(duì)他們的定義的,Eclipse已將自己定位為一個(gè)抽象平臺(tái),用來(lái)使用插件構(gòu)建任何工具,而IDEA則定位為一個(gè)“智能的Java IDE”,而且它正如此。
作為紀(jì)念我就嘗試著列絕一些Eclipse可能比IDEA更好的地方:
Eclipse看上去更棒,所有大題小做的SWT以及本地控件都用的很值。Eclipse看上去很穩(wěn)定的深思熟慮過(guò)的程序,它有著漂亮的字體以及圖標(biāo)。然而當(dāng)?shù)谝谎劭吹絀DEA是,它像是作噱頭的玩具一樣,有著不完全的圖標(biāo)以及笨拙的Swing界面。
Eclipse擁有更強(qiáng)的項(xiàng)目結(jié)構(gòu)支持。在IDEA中,你的項(xiàng)目是有模塊組成。在Eclipse中你擁有一個(gè)由工程組成的工作區(qū),每個(gè)工程都能被單獨(dú)打開或關(guān)閉,分組或隱藏。但是你真的需要么?
為Eclipse編寫插件似乎很簡(jiǎn)單
IDEA比Eclipse使用更多的系統(tǒng)資源。這其實(shí)也說(shuō)得通--因?yàn)镮DEA了解得更多
最后,Eclipse是免費(fèi)的,然而IDEA Community版本已經(jīng)夠我用了

最后的建議
如果你需要漂亮的圖標(biāo),用來(lái)創(chuàng)建桌面程序的平臺(tái),C++IDE或者你用一個(gè)低配的筆記本工作,那么Eclipse可能對(duì)你來(lái)說(shuō)是更好的選擇。但是如果你是一個(gè)正兒八經(jīng)的Java開發(fā)者,你需要更快更方便的工具幫你集中注意于解決問(wèn)題而不是讓你分心,IDEA則正是你所需要的。

via:dzone.com ,OSChina原創(chuàng)編譯

本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或編譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處,尊重他人勞動(dòng)共創(chuàng)開源社區(qū)。
轉(zhuǎn)載請(qǐng)注明:文章轉(zhuǎn)載自 開源中國(guó)社區(qū) [http://www.oschina.net]
本文標(biāo)題:為何 IntelliJ IDEA 比 Eclipse 更好
本文地址:https://www.oschina.net/news/26929/why-intellij-is-better-than-eclipse

更多Intellij文章:
IntelliJ使用技巧文章匯總
IntelliJ IDEA兩種keymap快捷鍵方案Mac OS X和Mac OS X 10.5+的區(qū)別
Intellij idea用快捷鍵自動(dòng)生成序列化id
IntelliJ IDEA智能提示忽略大小寫

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 爭(zhēng)論 有一些沒(méi)有唯一正確答案的“永恒”的問(wèn)題,例如,更好的是:Windows還是Linux,Java還是C#;誰(shuí)更...
    程序員BUG閱讀 471評(píng)論 0 2
  • 閱讀本文大概需要 4.2 分鐘。 本文為譯文,翻譯:彭博 https://www.oschina.net/news...
    良月柒閱讀 14,214評(píng)論 0 13
  • 春梅花開千萬(wàn)朵,游人駐足不忍過(guò)。 但愿人間春常在,大千世界充滿愛(ài)。
    梅園飛雪閱讀 357評(píng)論 4 15
  • 白瓊格焦點(diǎn)解決初級(jí)十期堅(jiān)持分享第250天 今天約練,我是觀察員。兩位老師都特別厲害,對(duì)角色也沒(méi)有太多要求,我們就想...
    潼寶的開心果閱讀 332評(píng)論 0 0
  • I always comfort myself that I told my heart just to be e...
    尼古拉斯包閱讀 349評(píng)論 0 0

友情鏈接更多精彩內(nèi)容