爲什麼IntelliJ IDEA比Eclipse更好


閱讀本文大概須要 4.2 分鐘。程序員

 

本文爲譯文,翻譯:彭博工具

https://www.oschina.net/news/26929學習

爭論

有一些沒有惟一正確答案的「永恆」的問題,例如,更好的是:Windows仍是Linux,Java仍是C#;誰更強大:Chuck Norris仍是Van Damme。字體

其中的一個Holy War即是Java和IDE的選擇:spa

有許多爭論的話題是討論它們哪一個有更多的插件、快捷鍵等等。它們之間有太多的不一樣而很難決定什麼纔是最重要的。.net

所以,人們都表示兩個IDE在功能上都差很少,選擇某一個則是我的喜愛問題了。插件

我認爲這不只僅是我的喜愛的問題,有客觀的緣由能代表:Intellij IDEA 確定比 Eclipse 更好。翻譯

我不會去大量比較二者細微不一樣,例如插件與快捷鍵之類的。3d

由於有一系列的blog是關於這些的。調試

我將會展現IDEA與Eclipse的一個最大的不一樣之處。一般IDEA和Eclipse的擁護者都未曾瞭解。

前者已經習慣性的使用着它而未曾想象IDE缺乏它會怎樣,後者則沒有使用它的習慣且不可思議有了它IDE能作得這麼好。

Eclipse的用戶在把玩IDEA的時候一般都不會意識到這個不一樣點,由於他們習慣了以Eclipse模式工做。

爲什麼我如此確信?

在開始說明以前,讓我解釋一下我是誰和爲何個人觀點值得一聽。

我使用Eclipse已經5年之久,我很瞭解它,我爲它編寫插件並真心地喜好它。

而後,我換了一個公司工做,並被強行轉移到IDEA上開發,在此次「分手」後,我才最終意識到爲何IDEA更加敏銳。

而現在我我已經使用IDEA一些年了,因此我能比較它們二者,由於我瞭解它們。

IDEA與Eclipse主要的不一樣

IDEA之因此更加敏銳的緣由是:IDEA懂得上下文。這也是JetBrains員工命名IDEA爲intelligent的緣由。它真正的含義又是什麼呢?

IDEA檢索你的整個項目,分析項目全部的內容,甚至構建語法樹。幸好有它,在任什麼時候候不管你將鼠標放置在哪裏,IDEA都知道你在哪裏並知道在那能幹什麼。

仍舊不了然?別擔憂,在列舉了如下幾個例子後,一切就清楚了。

這種對上下文的理解表如今不少不少方式上,如下只是其中的一部分。

一、調試

一般在調試過程當中,咱們想要求一些表達式的值,在Eclipse中你須要選定這個表達式,選定整個表達式很是重要,不然你就無法求出它的值。

而後,你可使用Ctrl+Shift+I看到這個表達式的值。

使用IDEA你不須要選擇任何東西,你只須要把光標移到你的表達式中而後按下Alt+F8。

IDEA會很好的理解這個你可能須要的表達式,而後顯示一個對話窗口,其中有一些它給出的建議參數變量。

你也能夠編輯並在對話框中當即將獲得這個表達式的值。至關的方便!試過這個特性後,你就不會再想在Eclipse中調試了。

基本上在兩個IDE上都能讓你作一樣的事,可是使用IDEA會更加簡單和快速。

對此我認真的表示,這個差別太大了:就像天堂跟人間同樣。在一個小小的IDEA對話窗口中就提供了自動完成,語法高亮以及你須要的一切。

二、自動完成

自動完成使得IDE比notepad更加優秀,在這個領域能感知上下文的IDEA有了質的飛躍。例如,咱們開始以下一行代碼:

assertElement(By.id("errorMessage"), vi

如今咱們想要查找以vi開頭的選項有哪些。

IDEA怎麼作的呢?

無需等待任何的按鍵,它立刻就能理解assertElement須要一個Conditaion類的示例做爲第二個參數,而在Condition類中有一個靜態變量名叫visible。

IDEA會直接建議這個惟一的有效選項。

然而,Eclipse會怎麼作呢?

唉,它不能理解上下文,它不知道光標所在處就是assertElement方法的第二個參數。

所以當你按下「神聖」的Ctrl+Space時,Eclipse只會簡單的顯示全局中以vi字母開頭的一切。

在一個美麗的彈出框中我看到了不少漂亮的高亮的格式規範的無用的信息。:(

三、重構

專業的程序員可以高效的使用IDE提供的重構功能。全部的現代IDE都提供許多印象深入的重構功能。

可是仍是那句,IDEA的重構功能也很聰明智能。它們能讀懂你須要什麼,而後針對不一樣的狀況提供給你最適合的解決方案。

例如,假設咱們有一個assertErrorMessageIsHidden方法:

public void assertErrorMessageIsHidden() {  assertElement(By.id("errorMessage"), Condition.visible);}

咱們以字符串「errorMessage」做爲該方法的一個參數。

讓咱們先從IDEA開始,將光標放在任何字符串「errorMessage」上,按Ctrl+Alt+P(表明「parameter」),IDEA將會建議咱們可能能夠在哪些表達中用次字符串爲參數。

當「errorMessage」表達式被選定之後,IDEA將會建議一些可能的能用作該參數的變量名稱。

不時的驚喜

你會常常地驚訝於IDEA的聰敏表現,好比它爲你提示一些選項的名稱。

它考慮到方法名稱,變量類型甚至是變量值,以及其餘的此類變量的名稱,與以前你給定的此變量的名稱,除了忽略了你的生肖。

相信我,你會想說「Wow,IDEA也能這樣?」,我想說至少每月一次吧。

如今讓咱們看看Eclipse是怎麼樣給出建議的。

別忘了,選擇整個"errorMessage"表達式哦。

選擇一個「推薦參數」的重構功能(經過菜單,沒有什麼快捷鍵可供使用),得到差很少相同的結果,然而,Eclipse不會給出變量名提示選項,但幸好不會。

結論

若是咱們選擇Java IDE,那麼Intellij IDEA確定要比Eclipse好的。

這不只僅是我的喜愛問題。從客觀上看,IDEA更好。

它是的你可以快捷地編寫和修改代碼。它給出恰當的名稱提示,查找適合的方法。

它不須要你特別地選擇表達式便會猜想到你想要作的以及你想如何對它命名。IDEA預示着並給你提示。

P.S. Remarks

我認爲IDEA在做爲Java IDE時確實比Eclipse更好。

若是你考慮他們其餘方面的能力例如用於其餘例如C++、Python、Scala的IDE上,或者是做爲構建桌面的應用的平臺,Eclipse頗有可能拔得頭籌。

事實上這是依賴於對他們的定義的,Eclipse已將本身定位爲一個抽象平臺,用來使用插件構建任何工具,而IDEA則定位爲一個「智能的Java IDE」,並且它正如此。

做爲記念我就嘗試着列絕一些Eclipse可能比IDEA更好的地方:

  • Eclipse看上去更棒,全部大題小作的SWT以及本地控件都用的很值。Eclipse看上去很穩定的深思熟慮過的程序,它有着漂亮的字體以及圖標。然而當第一眼看到IDEA是,它像是做噱頭的玩具同樣,有着不徹底的圖標以及笨拙的Swing界面。

  • Eclipse擁有更強的項目結構支持。在IDEA中,你的項目是有模塊組成。在Eclipse中你擁有一個由工程組成的工做區,每一個工程都能被單獨打開或關閉,分組或隱藏。可是你真的須要麼?

  • 爲Eclipse編寫插件彷佛很簡單。

  • IDEA比Eclipse使用更多的系統資源。這其實也說得通--由於IDEA作得更多。

  • 最後,Eclipse是免費的,然而IDEA Community版本已經夠我用了。

最後的建議

若是你須要漂亮的圖標,用來建立桌面程序的平臺,C++IDE或者你用一個低配的筆記本工做,那麼Eclipse可能對你來講是更好的選擇。

可是若是你是一個正兒八經的Java開發者,你須要更快更方便的工具幫你集中注意於解決問題而不是讓你分心,IDEA則正是你所須要的。

 

 

往期精彩回顧
 

歡迎關注個人公衆號「程序員的成長之路」,閱讀更多精彩!

相關文章
相關標籤/搜索