为何IntelliJ IDEA比Eclipse更好

阅读本文大概需要 4.2 分钟。

本文为译文,翻译:彭博

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

争论

有一些没有唯一正确答案的“永恒”的问题,例如,更好的是:Windows还是Linux,Java还是C#;谁更强大:Chuck Norris还是Van Damme。

其中的一个Holy War便是Java和IDE的选择:

有许多争论的话题是讨论它们哪个有更多的插件、快捷键等等。它们之间有太多的不同而很难决定什么才是最重要的。

因此,人们都表示两个IDE在功能上都差不多,选择某一个则是个人喜好问题了。

我认为这不仅仅是个人喜好的问题,有客观的原因能表明:Intellij IDEA 肯定比 Eclipse 更好。

我不会去大量比较两者细微不同,例如插件与快捷键之类的。

因为有一系列的blog是关于这些的。

我将会展示IDEA与Eclipse的一个最大的不同之处。通常IDEA和Eclipse的拥护者都不曾了解。

前者已经习惯性的使用着它而不曾想象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有了质的飞跃。例如,我们开始如下一行代码:

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

往期精彩回顾

程序员接私活的7大平台利器

每秒 570000 的写入,如何实现?

这40张图送给单身程序员,情人节请一笑而过!

IDEA一定要懂的32条快捷键

世上最污技术解读,我竟然秒懂了。

Bing挂了!百度又“赢了”

遇到卖茶女,应该如何优雅的回复她

我被程序员坑了600万致公司倒闭,当事人逐条反驳:这锅我不背

一千行MySQL详细学习笔记(值得学习与收藏)

七点建议助您写出优雅的Java代码

欢迎关注我的公众号「程序员的成长之路」,阅读更多精彩!

原文地址:https://www.cnblogs.com/gdjk/p/10421720.html

时间: 2024-10-28 17:14:18

为何IntelliJ IDEA比Eclipse更好的相关文章

为何 IntelliJ IDEA 比 Eclipse 更好

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快捷键的比较【转】

转自:http://www.weste.net/2015/04-26/102981.html IntelliJ IDEA和Eclipse比较,哪个更好? 2015-04-26 11:00:57来源:importnew作者:Dony.Xu翻译 在我看来,每一个IDE都很棒,IntelliJ看起来更加的现代,但有时候我又喜欢经典版的Eclipse,这可能是因为过去经常使用Eclipse.以后可能会继续受这个因素的影响. 作为一个资深的Eclipse用户,我想对IntelliJ IDEA做一个更为严谨

Intellij IDEA 导入Eclipse或MyEclipse的Web项目(旧版 转载)

Intellij IDEA 导入Eclipse或MyEclipse的Web项目 博客分类: Intellig IDEA Intellij IDEAEclipseWeb Intellij IDEA 导入Eclipse或MyEclipse的Web项目 1.通过TortoiseSVN客户端将远程项目checkout出来,保存到硬盘上 2.File -> Import Module -> 选择之前检出的项目 3.进入"Import Module"窗口,选择"Import

Jindent——让intellij idea 像eclipse一样生成模版化的javadoc注释

插件地址 http://plugins.jetbrains.com/plugin/2170?pr=idea 安装方法参考 http://www.cnblogs.com/nova-/p/3535636.html 安装完成后 File>Settings>Jindent-Source Code Formatter 这里是编辑格式的区域 可以编辑和定义自己的变量 应用一下 格式化后 后记 这个插件不仅仅是进行javadoc注释,还可以进行各种文件的格式化.出现一些小问题就是不知道为什么有些注释的地方本

Builgen 插件——IntelliJ IDEA和Eclipse Java Bean Builder模式代码生成器-比lombok更符合需求

builder模式在越来越多的项目中使用,类似于alibaba fastjson JSONObject.fluentPut(),调用一个方法后返回这个对象本身,特别适合构建一些参数超级多的对象,代码优雅且易读.构建一个对象变成了SomeObject some = new SomeObject().a("a").b("b").c("c").biuld();.ItellJ IDEA和Eclipse的generator只能生成传统的getter set

IntelliJ IDEA像Eclipse一样打开多个项目

原文:http://blog.csdn.net/zht666/article/details/47831893 我们做项目实际中经常会遇到这样的情况,创建一个common项目(Maven项目)作为公用项目,common中有很多工具类可以供其它多个项目调用. 例如,把common.service都单独拆开成独立的Maven项目,供其它的项目使用,通过jar的方式被其它项目通过Maven引用. 现在web项目需要引用 common和service,如果IDEA分别单独打开common.service

IntelliJ IDEA和Eclipse最常用的快捷键对应表:

描述 Eclipse Intellij 代码补全 Ctrl+space Ctrl+space 打开类或者接口 (两个IDE都支持使用"驼峰字符"前缀的方式来过滤查找列表,进而轻松完成搜索:比如:可 以使用"PoDI"来检索PodcastDaoImpl类) Ctrl+Shift +T Ctrl+N 快速打开文件/资源 Ctrl+Shift+R Shift+F6 打开声明 F3 Ctrl+B 查看Javadoc/详情 鼠标滑过(F2聚焦) Ctrl+Q 快速修复 Alt

Intellij使用-- 导入Eclipse的代码格式化文件

目录[-] 方法 安装插件: 配置插件: 使用插件 测试 对于一个团队来说,使用统一的代码格式是非常重要的,否则在使用版本控制工具时,会出现大量的冲突.在Eclipse里,我们可以通过一些xml来进行代码格式的统一,但是这些文件要应用在Intellij里,还是要费一点周折的.不过如果你跟博主一样,有过合并一个文件出现200个冲突的惨痛经历之后,就会觉得这个工作是值得的了. 方法 一般我们使用Eclipse会统一的code-style.xml文件.Intellij里无法直接导入这个文件,不过有一个

【Intellij IDEA】eclipse项目导入

intellij idea中文资料网上比较少,对于eclipse的项目如何导入intellij idea也没有完整的说明,本人在这里整理下,方便更多人加入到intellij idea的阵容里. 直接上干货! 一.导入Eclipse项目至idea File – New – Module from Existing Sources- 选择你的eclipse项目 此步比较关键,选择Eclipse,往后直接next next finish 就可以了. 目前为止,项目基本导入成功了,但是想在idea的To