為何 IntelliJ IDEA 比 Eclipse 更好

來源:互聯網
上載者:User

標籤:blog   http   io   ar   os   使用   sp   java   div   

http://www.oschina.net/news/26929/why-intellij-is-better-than-eclipse聖戰

有一些沒有唯一正確答案的“永恒”的問題,例如哪個更好:是Windows還是Linux,Java還是C#;誰更強壯:Chuck Norris還是Van Damme。

其中的一個聖戰便是Java IDE的選擇:

有許多爭論的話題是討論它們哪個有更多的外掛程式、快速鍵等等。它們之間有太多的不同而很難決定什麼才是最重要的。

因此,人們都表示兩個IDE在功能性上都差不多,選擇某一個則是個人喜好問題了。

我認為這不僅僅是個人喜好的問題,有客觀的原因能表明:Intellij IDEA 肯定比Eclipse更好.

我不會去大量比較兩者細微不同,例如外掛程式與快速鍵之類的。因為有一系列的blog是關於這些的,例如:[part 1] [part 2] [part 3]。我將會展示IDEA與Eclipse的一個最大的不同之處。通常IDEA和Eclipse的fans都不曾瞭解。前者已經習慣性的使用著它而不曾想象IDE缺少它會怎樣,後者則沒有使用它的習慣且難以想象有了它IDE能做得這麼好。Eclipse的使用者在把玩IDEA的時候通常都不會意識到這個不同點,因為他們習慣了以Eclipse模式工作。

為何我如此確信?

在開始說明之前,讓我解釋一下我是誰和為什麼我的觀點值得一聽。

我使用Eclipse已經5年之久,我很瞭解它,我為它編寫外掛程式並真心地喜愛它。然後,我換了一個公司工作,並被強行轉移到IDEA上開發,在這次“分手”後,我才最終意識到為什麼IDEA更加敏銳。而如今我我已經使用IDEA一些年了,所以我能比較它們兩者,因為我瞭解它們。

IDEA與Eclipse主要的不同

IDEA之所以更加敏銳的原因是:IDEA懂得上下文。這也是JetBrains員工命名IDEA為intelligent的原因。它真正的含義又是什麼呢?IDEA檢索你的整個項目,分析項目所有的內容,甚至構建文法樹。幸虧有它,在任何時候無論你將滑鼠放置在哪裡,IDEA都知道你在哪裡並知道在那能幹什麼。

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

這種對內容相關的理解表現在很多很多方式上,以下只是其中的一部分。

1、調試

通常在調試過程中,我們想要求一些運算式的值,在Eclipse中你需要選定這個運算式,選定整個運算式非常重要,否則你就沒法求出它的值。然後,你可以使用Ctrl+Shift+I看到這個運算式的值。

使用IDEA你不需要選擇任何東西,你只需要把游標移到你的運算式中然後按下Alt+F8。IDEA會很好的理解這個你可能需要的運算式,然後顯示一個交談視窗,其中有一些它給出的建議參數變數。你也可以編輯並在對話方塊中立即將得到這個運算式的值。相當的方便!試過這個特性後,你就不會再想在Eclipse中調試了。

基本上在兩個IDE上都能讓你做同樣的事,但是使用IDEA會更加簡單和快速。對此我認真的表示,這個差異太大了:就像天堂跟人間一樣。在一個小小的IDEA交談視窗中就提供了自動完成,文法高亮以及你需要的一切。

2、自動完成

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

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

現在我們想要尋找以vi開頭的選項有哪些。

IDEA怎麼做的呢?無需等待任何的按鍵,它馬上就能理解assertElement需要一個Conditaion類的樣本作為第二個參數,而在Condition類中有一個靜態變數名叫visible。IDEA會直接建議這個唯一的有效選項。

然而,Eclipse會怎麼做呢?唉,它不能理解上下文,它不知道游標所在處就是assertElement方法的第二個參數。因此當你按下“神聖”的Ctrl+Space時,Eclipse只會簡單的顯示全域中以vi字母開頭的一切。

在一個美麗的彈出框中我看到了很多漂亮的高亮的格式規範的無用的資訊.:(

3、重構

專業的程式員能夠高效的使用IDE提供的重構功能。所有的現代IDE都提供許多印象深刻的重構功能。但是還是那句,IDEA的重構功能也很聰明智能。它們能讀懂你需要什麼,然後針對不同的情況提供給你最適合的解決方案。

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

?
123 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則正是你所需要的。

 

via:dzone.com ,OSChina原創編譯

相關連結
  • IntelliJ IDEA 的詳細介紹:請點這裡
  • IntelliJ IDEA 的:請點這裡

為何 IntelliJ IDEA 比 Eclipse 更好

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.