为何IDEA比Eclipse更好?

转载于:http://sd.csdn.net/a/20120320/313313.htmlhtml

 

 

 

 

有一些没有惟一正确答案的“永恒”的问题,例如哪一个更好:是Windows仍是Linux,Java仍是C#;谁更强壮:Chuck Norris仍是Van Damme。其中的一个圣战即是Java IDE的选择:java

有许多争论的话题是讨论它们哪一个有更多的插件、快捷键等等。它们之间有太多的不一样而很难决定什么才是最重要的。所以,人们都表示两个IDE在功能性上都差很少,选择某一个则是我的喜爱问题了。我认为这不只仅是我的喜爱的问题,有客观的缘由能代表:Intellij IDEA确定比Eclipse更好。程序员

我不会去大量比较二者细微不一样,例如插件与快捷键之类的。由于有一系列的blog是关于这些的,例如:[part 1] [part 2] [part 3]。我将会展现IDEA与Eclipse的一个最大的不一样之处。一般IDEA和Eclipse的fans都未曾了解。前者已经习惯性的使用着它而未曾想象 IDE缺乏它会怎样,后者则没有使用它的习惯且不可思议有了它IDE能作得这么好。Eclipse的用户在把玩IDEA的时候一般都不会意识到这个不一样点,由于他们习惯了以Eclipse模式工做。ide

为什么我如此确信?工具

在开始说明以前,让我解释一下我是谁和为何个人观点值得一听。字体

我使用Eclipse已经5年之久,我很了解它,我为它编写插件并真心地喜好它。而后,我换了一个公司工做,并被强行转移到IDEA上开发,在此次 “分手”后,我才最终意识到为何IDEA更加敏锐。而现在我我已经使用IDEA一些年了,因此我能比较它们二者,由于我了解它们。idea

IDEA与Eclipse主要的不一样spa

IDEA之因此更加敏锐的缘由是:IDEA懂得上下文。这也是JetBrains员工命名IDEA为intelligent的缘由。它真正的含义又是什么呢?IDEA检索你的整个项目,分析项目全部的内容,甚至构建语法树。幸好有它,在任什么时候候不管你将鼠标放置在哪里,IDEA都知道你在哪里并知道在那能干什么。.net

仍旧不了然?别担忧,在列举了如下几个例子后,一切就清楚了。插件

这种对上下文的理解表如今不少不少方式上,如下只是其中的一部分。

1.调试

一般在调试过程当中,咱们想要求一些表达式的值,在Eclipse中你须要选定这个表达式,选定整个表达式很是重要,不然你就无法求出它的值。而后,你可使用Ctrl+Shift+I看到这个表达式的值。

使用IDEA你不须要选择任何东西,你只须要把光标移到你的表达式中而后按下Alt+F8。IDEA会很好的理解这个你可能须要的表达式,而后显示一个对话窗口,其中有一些它给出的建议参数变量。你也能够编辑并在对话框中当即将获得这个表达式的值。至关的方便!试过这个特性后,你就不会再想在 Eclipse中调试了。

基本上在两个IDE上都能让你作一样的事,可是使用IDEA会更加简单和快速。对此我认真的表示,这个差别太大了:就像天堂跟人间同样。在一个小小的IDEA对话窗口中就提供了自动完成,语法高亮以及你须要的一切。

2.自动完成

自动完成使得IDE比notepad更加优秀,在这个领域能感知上下文的IDEA有了质的飞跃。例如,咱们开始以下一行代码:

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

如今咱们想要查找以vi开头的选项有哪些。

IDEA怎么作的呢?无需等待任何的按键,它立刻就能理解assertElement须要一个Conditaion类的示例做为第二个参数,而在Condition类中有一个静态变量名叫visible。IDEA会直接建议这个惟一的有效选项。

然而,Eclipse会怎么作呢?唉,它不能理解上下文,它不知道光标所在处就是assertElement方法的第二个参数。所以当你按下“神圣”的Ctrl+Space时,Eclipse只会简单的显示全局中以vi字母开头的一切。

在一个美丽的弹出框中我看到了不少漂亮的高亮的格式规范的无用的信息。

3.重构

专业的程序员可以高效的使用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则正是你所须要的。