Eclipse还是IntelliJ? NetBeans还是Eclipse? IntelliJ还是NetBeans? 关于IDE的争议在软件开发人员中最为普遍,并且几乎永远不会结束。 我认为自己是IntelliJ的忠实拥护者,但我确实意识到IntelliJ可以在很多方面做得更好,而NetBeans和Eclipse在某些方面则更好。 在这篇文章中,我想概述我最喜欢的IntelliJ功能,以及其他。 我还要指出IntelliJ可以做得更好的一些方面。

我的一位朋友曾经说过:

我不喜欢IDE。 它们有助于编写冗长的代码。 在现实生活中,我90%的时间都花在代码阅读上。 详细的代码降低了我的工作效率

我认为他错了。 现实情况是,IDE不仅用于编写/生成代码,而且在更大程度上还用于读取和分析代码。 您可能是核心的Emacs / Vim忍者,但是仍然有些事情是文本编辑器无法完成的。

导航

浏览源代码是程序员定期执行的活动之一。 基本上,使用Emacs或Vim导航代码并不难,但是它将只限于基本的导航选项。 IDE使导航功能更进一步。

让我们看看IntelliJ中的导航功能是什么。 首先,通过Ctrl + N执行“ Open Type”:

IntelliJIDEA第一部分很酷

在Eclipse中使用Ctrl + Shift + T可以实现相同的功能,并且其行为是完全相同的。

Ctrl + Shift + N将帮助您打开任何资源。 Eclipse对Ctrl + Shift + R的作用相同。

它可能已经全部存在,还有更多– Ctrl + Shift + Alt + N会为您找到特定符号的所有外观,例如方法名称:

IntelliJIDEA第一部分很酷

这并不意味着IntelliJ会扫描代码中是否存在特定符号,而是会匹配代码结构并查找代码中的元素,因此您将获得方法声明列表,而不仅仅是方法的任何外观代码中的名称。 如果您的类没有共享相同的层次结构,这将非常有用。

IntelliJIDEA第一部分很酷

通常,当您浏览源代码时,您会跳过类层次结构,浏览不同的方法,打开类型声明等。很常见的是,有时您想在浏览中退后几步并朝其他方向前进。 Ctrl + Alt +(左|右)箭头是用于此目的的非常有用的快捷方式。 只要插入符号插入代码中的任何位置,都会记住该位置,您可以在浏览历史记录中来回移动。 这非常酷,就好像您在浏览大型代码库时,您甚至可能都不记得刚才才打开的类。

实际上,您可以通过按Ctrl + E来获得最近访问过的文件的列表-这也经常用于重新打开最近关闭的文件。

在Eclipse中(使用Alt +(左|右)箭头快捷键),向前导航是相同的。 但是我找不到那里最近编辑过的文件的列表,而这可以在IntelliJ中通过按Ctrl + Shift + E快捷键来完成。

还有许多其他功能可以使您的代码浏览体验更加愉悦。 例如,IntelliJ和Eclipse都提供了快速浏览当前打开的类的位置的功能-Alt + Home将弹出带有该类路径的导航栏。

IntelliJ中此导航参数的一个很酷的功能是,可以使用Ctrl + Shift + I浏览任何文件的内容,而无需真正打开文件:

IntelliJIDEA第一部分很酷

在Eclipse中,类似的功能称为“浏览面包屑浏览”,可通过Alt + Shift + B调用。 区别在于,在Eclipse中,仅当打开Java类型并且仅用作导航栏时,它才起作用–没有可用的快速预览。 另外,除了单击工具栏上的专用按钮之外,我没有找到一种简单的方法来摆脱Eclipse中的“面包屑”。

Ctrl + Shift + I还可以在IntelliJ中处理您可能要检查的任何符号。 例如,您可以在任何方法调用上按下此快捷方式,这将引发一个弹出窗口,该弹出窗口显示方法的源代码:

IntelliJIDEA第一部分很酷

另外,如果您尝试浏览类型层次结构中可能涉及的代码,则可以通过在相同的快速视图弹出窗口中选择类型来选择实现:

IntelliJIDEA第一部分很酷

谈到类的层次结构导航,IntelliJ也很好地实现了–快速层次结构视图的使用方式与Eclipse中相同。 IntelliJ的与众不同之处在于可以轻松导航至实现。 例如,从接口方法声明到任何实现。 如果接口方法有多个实现,则Ctrl + Alt + B将调用带有实现列表的弹出对话框:

IntelliJIDEA第一部分很酷

查找用法

“查找用法”功能总是让我在Eclipse中感到紧张。 完全无法使用Ctrl + Shift + G (在工作区中查找引用)。 我的意思是,好的,您可以使用一个快捷方式在工作区中找到对该方法的所有引用,但是要在项目范围内执行此操作,您必须触摸鼠标。

这是IntelliJ中的功能。 首先, Alt + F7可以为您提供与Eclipse中的Gtrl + Shift + G几乎相同的功能,而且您无需触摸鼠标即可定义查找范围。 向下箭头键为您提供可供参考循环使用的范围选择,按Enter键即可完成。 即使这样简单的功能在IntelliJ中也非常有用。

IntelliJIDEA第一部分很酷

除此之外,还可以进行快速查找-使用Ctrl + Alt + F7组合键,您将弹出包含感兴趣方法参考文献的列表,并且可以直接从那里使用Ctrl + Shift + I (前面提到)进行查看。使用该方法的源代码:

IntelliJIDEA第一部分很酷

标记变量的出现在IntelliJ和Eclipse中的工作方式相同,除了在Eclipse中,您可以切换highligh,在IntelliJ中,您可以按下快捷键( Ctrl + Shift + F7 ),但结果对我而言并没有本质的区别。 但是,在IntelliJ中,突出显示可用于多个变量,而在Eclipse中,突出显示仅可用于单个变量。

IntelliJIDEA第一部分很酷
IntelliJIDEA第一部分很酷

书签

如果可以在代码中的某些位置添加书签,以便能够返回到感兴趣的位置,则可以轻松浏览代码。 似乎IntelliJ开发人员将其视为优先事项,因为所有Ctrl + Shift +#Ctrl +#快捷键均保留用于书签需求。

Ctrl + Shift +# (例如Ctrl + Shift + 1 )在光标所在的行上设置一个快速书签。 之后,您可以通过按Ctrl +# (例如Ctrl + 1 )返回到加书签的位置。 字符符号也可以用于标记位置,但之后不能快速访问该位置-必须使用特殊菜单。 以下截屏演示了此功能:

在Eclipse中, 也可以使用书签功能,但是它缺乏与IntelliJ中相同的可用性-默认情况下没有快捷方式,并且没有鼠标也不容易使用。

当地历史

这两个IDE(IntelliJ和Eclipse)都可以跟踪本地更改,并提供本地历史记录视图,您可以在其中浏览所做的更改。 该功能有点类似于使用VCS,但没有VCS。

最初,该功能似乎在IntelliJ和Eclipse中以相同的方式实现,但是如果您深入研究并开始真正使用它–您会注意到其中的区别。 再次,IntelliJ在可用性方面将功能进一步扩展了(但是我对此颇有偏见)。

IntelliJIDEA第一部分很酷

特别是diff-view,此功能非常直观-您可以清楚地看到所做的更改并轻松迁移它们。 在Eclipse中,该视图实际上是相似的,但是当我对其进行测试时–向类中添加了新方法,引入了新的语句–尽管在历史视图中创建了一个条目,但此后我找不到这些更改。 在IntelliJ的视图中,您可以创建补丁或还原到所需的版本。

IntelliJIDEA第一部分很酷

智能代码完成

打字只是打结,对吗? 实际上,令人惊奇的是IDE多么智能地实现了这一目的。 当IDE可以按照您的意愿自动完成语句时,这不是很酷吗?

这是一个简单的例子。 我想在一个类中引入一个字段–我将输入List <String> list = new ..然后按Ctrl + Space。 Eclipse对我有什么建议? 我要在其中声明此字段的类的列表和名称。不是很聪明,是吗?

IntelliJIDEA第一部分很酷

在IntelliJ中,绑上同一行代码并按Ctrl + Space后 ,弹出窗口为我提供了classpath中可用的List实现的列表。 另外, Ctrl + Shift + Space会变得更加聪明,并建议我将ArrayList作为首选。

IntelliJIDEA第一部分很酷
IntelliJIDEA第一部分很酷

我在IntelliJ中发现的另一个很酷的自动完成行为是,如果您尝试两次智能类型完成( Ctrl + Shift + Space ),则IntelliJ将搜索具有期望类型的链接表达式。

IntelliJIDEA第一部分很酷

实时模板

模板是另一个可以帮助您快速编写代码的功能。 通常,IDE为您提供了一组模板,但是您也可以添加新模板。 让我们看看如何在IntelliJ中完成它。

Ctrl + J将弹出所有可用模板的列表,并且可以通过模板名称进行过滤。 如果列表中只有几个模板,则不难找到正确的模板。 但是如果列表太长,最好有一些其他方法来过滤列表

模板只是一个实用的用例:

检查方法参数是否为空相等是很常见的。 可以使用inn模板生成相应的if语句。 因此,通过在编辑器中键入“ inn”并按扩展键(默认为TAB),我们将得到null-if-if-statement。

IntelliJIDEA第一部分很酷

接下来,很常见的一段代码是对元素集合的迭代。 IntelliJ为各种类型的循环提供了许多迭代模板。 迭代模板之间的共同点是,所有他们开始与“它” - ITER,ITCO, 俄通社等,所以比如我们有元素的集合,并通过键入ITER和扩张的关键,我们将生成一个foreach循环迭代上下文中的集合。

IntelliJIDEA第一部分很酷

如果适用,模板也可以用于周围的语句。 Ctrl + Alt + T可以解决问题。 例如,id喜欢用try / catch块包围对象检索,但是我已经设法生成一个循环迭代所得到的集合:

IntelliJIDEA第一部分很酷

默认情况下,我会在Eclipse中弄乱的另一个模板是soutv ,它扩展为在上下文中带有变量的System.out.println(…)语句:

IntelliJIDEA第一部分很酷

编辑和创建模板非常简单, 并且文档齐全 通常我会定义自己的try / catch模板,因为它不是开箱即用的(很奇怪)。

IntelliJIDEA第一部分很酷

IntelliJ中模板的独特功能是您可以定义新模板,这些模板以IDE中的可用功能为后盾,例如智能代码完成和其他有用的功能

重构

我想我将大体上跳过重构部分–比较IDE中可用的大量重构是很疯狂的。 关于一个简单重构用例的可用性,只有一个注意事项–提取局部变量/方法/等。 在Eclipse中,您必须先选择完整的语句,然后再按Alt + Shift + L(或将光标置于表达式的后面),否则IDE拒绝理解您要做什么,弹出消息“必须选择表达式”**此重构”

IntelliJ似乎仍然可以检测上下文并为您提供用于相同重构的选项,它的智能程度更高:

IntelliJIDEA第一部分很酷

更多内容,敬请期待:)

参考: IntelliJIDEA的优点是什么。 代码不可能博客中来自JCG合作伙伴 Anton Arhipov的 第一部分

相关文章 :

翻译自: https://www.javacodegeeks.com/2011/11/whats-cool-in-intellijidea-part-i.html

相关文章: