`
tomcat_oracle
  • 浏览: 317525 次
社区版块
存档分类
最新评论

程序员的工作效率:Emacs vs IntelliJ IDEA

    博客分类:
  • Java
阅读更多

我用 Emacs 写了 7 年的 C++ 代码。 4 年前,当我换了工作,开始使用 IntelliJ IDEA 转向 Java 开发。毫无疑问,比起 Emacs,我在 IntelliJ IDEA 上写代码更有效率。

导航

代码好像真的是80%由导航生成,只有20%是实际写作的结果,IntelliJ IDEA的真正亮点所在是导航到代码库。例如,假设你要添加功能到现有的类,即使你对那个类很熟悉,你还是需要检查新代码该放在哪里比较合适,需要添加一 个新的声明吗?还有什么其他的类在使用你现在修改的方法?这些都需要查看现有代码。

甚至在你写代码时也会有很多导航,你想要使用的那个方法的名称是什么?参数的序列是什么-是先有一个string,然后一个
整型,或是其他方式?枚举可能的取值是什么?

有一些些导航存在于一个文件中,而在一个文件中我最常用的操作有:跳转到文件的顶部或底部,转到一行的开始或结束,选择文本,剪切,复制,粘贴,向前向后搜索,注释以及取消注释代码。 Emacs 和IntelliJ IDEA对这些操作都有很好的
命令和快捷键支持。

但是,当涉及到文件之间的导航时,IntelliJ IDEA就有很大的优势。其中一个最有用的命令是Ctrl + B(转到声明),正如其名所暗示的,你可以转到变量,方法,以及类的声明处,即使它在另一个文件中。Ctrl + Alt + 左键可以返回上一级,我时刻都在用它,经常会在跳几级后回到开始的地方。

另一个相关的导航命令是Ctrl + Alt + B(转向定义)。在一个接口的方法名处使用此命令,你将会得到一个弹出的列表显示着这个方法所有实现的地方,然后你可以选择一个你需要转向的,(如果只有一个实现,你就可以直接转到哪儿)。重载方法是同样的道理。

与此相反的是Ctrl + U (转向父类方法或父类)。如果插入符在一个接口函数的实现处(一个小小的界面符号在方法名的左侧),这个命令将会带你转到接口本身。

当我想查看一个方法或变量被使用的所有地方时,我使用Ctrl + Alt + F7(显示用法)。这个命令弹出一个包含所有使用处
的列表,你可以很容易地转向任意一个。如果要查找类,我使用Ctrl + N ( 转到类),它可以让你使用大写字母和*通配符搜索类名。我也经常用ctrl + E。他会弹出一个窗口包含了最近最常使用的15个文件(最常使用的在最上面)。你只需要向下选择一个你想要的,然后按下回车转到它。

另一个有用的命令是Ctrl + P(参数信息),在方法和构造函数的参数处使用它来获得一个弹出窗口显示参数的名称和类型。而在Emacs中,从某种意义上来说这不是导航,你将不得不去方法或构造函数的定义处去找到这些信息。

上述所有的命令是难以置信的节省时间。在Emacs中,你需要自己转到文件以便找到你所需要的。而在IntelliJ IDEA中,它是自动的。事实上,我注意到,在我使用C++和Emacs的日子里,比起Java我定义的类趋向于更大,方法少而且长。我想一个原因是,当 一切操作都在同一个文件中时Emacs导航更加容易,但是对于具有巨大导航功能的 IntelliJ IDEA来说,如果功能分散在多个文件中也并没有多大的关系.

其他优势

除了导航,IntelliJ IDEA在很多方面都具备优势。虽然这两种环境都有语法高亮, IntelliJ IDEA在此之上增加了一个新的有用功能。静态的方法和变量以斜体显示,没有使用的变量或方法会变灰。当然,IntelliJ IDEA会用红色标注任何你输入的语法错误。没有必要再去为了检查错误编译程序-它会实时地帮你完成。

在实际编码时IntelliJ IDEA也会有一些非常有用的功能。首先就是名称的自动补全,键入一个变量或方法名的几个字母,按Ctrl+空格键,名称会被补全。或者在点后按Ctrl+空格可以查看一个对象的可用方法。

另一个功能,根据IntelliJ IDEA的使用统计数据,是我用的最多的一个单一功能,那就是语法的自动选择。当你反复按下 Ctrl + W,他对代码的选择部分会越来越大。例如,它就会选择一个方法名,然后是一个表达式,再然后是整个语句,最后是整个代码块。这在搜索,排版缩进,注释代码 时非常有用。

当然,还有重命名支持。在Emacs中,如果我重命名一个方法名称,我需要做查找和替换。但是对于每一个替换,我不得不检查以确保我不会一不小心改 变不应该改变的东西。如果方法是公有的,我又必须在其他类中找到出现的地方。在IntellJ IDEA中,这就变成一件非常容易的事情。仅仅需要选择方法名,按下Ctrl+F6,输入新的名字,然后敲回车。所有文件中方法名出现的所有地方都将会被 替换。

对IDE毫无根据的顾虑

我经常会看到一些评论,关于如何你如果使用了IDE,你就必须很多时候在使用使用鼠标和菜单。这是完全错误地。我在所有的程序中都喜欢用快捷键,尽 量不用鼠标。IntelliJ IDEA对于所有的命令都有强大的快捷键绑定,而且很容易增加新的或者修改现有的命令。所以你需要使用鼠标和菜单的情况并不多。以上我提到的所有命令都是 用快捷键访问的。

另一个毫无根据的顾虑是你只能做那些列在IDE菜单中的操作。这也是一个不能成立的观点。就我而言,我所做的正和我在emacs中的一样,即编写和编辑代码。唯一的区别是,IntelliJ IDEA更快更准确。

还有一个普遍的担心,即你会被强制带入到IDE“封闭的环境中”。好了,没有什么可以阻止你在需要的时候使用其他具。源码树一直在那里存在。退出 IDE,去用任何你需要的工具,然后再返回来。例如,我有时需要跨越好几个IntelliJ IDEA工程使用grep。在这些情况下,我就会用一个合适的正则表达式来使用grep。没有什么大不了的。

最后,我还看到的一种说法是IDE到处加了配置和元数据文件。在IntelliJ IDEA中,只有3个工程文件被加到了目录结构的根目录下。就是这样。非常的不起眼。

你不知道你错过了什么

非常有趣的一件事是,在我换用IntelliJ IDEA之前我非常喜欢用Emacs。我已经学到了很多快捷操作,已经变得非常善于编辑。我也非常善于使用grep,查找以及使用目录结构中的其他的 Unix命令,因此并没有觉得我还缺少什么工具。快速说明一下:Unix命令行工具最好的来源是 Unix Power Tools。

当我开始用Symsoft时,几乎所有的开发人员都在使用 IntelliJ IDEA。所有就很自然地尝试了。我很快发现可以用它能做什么,并且永不回头。事实上,一旦意识到它可以做一些酷的东西,我就坚持展示它给我的前同事看。 无论何时,只要我和他们共进完午餐,我都会带他们来到我的办公室。给他们展示一些IntelliJ IDEA的招数,眼见为实。

但是一个好的编辑器总会有自己的空间

对于一个好的文本编辑器来说总会有一些有用的地方。即使我没有用Emacs写java,我还是几乎每天都在用它。这是我编辑文本文件的选择,我也偶然用它编写bash和ruby脚本。

然而,就在前几天,我的一个同事提出了关于文本编辑器的话题。他提到他开始学习VIM,本着确保我知道我错过了什么的精神,我也会试试看。所以过会儿,我将会用Vim代替Emacs。让我们看看结果会如何呢。

2
6
分享到:
评论
1 楼 white_crucifix 2014-03-15  
看文风像是老外写的

引用
我经常会看到一些评论,关于如何你如果使用了IDE,你就必须很多时候在使用使用鼠标和菜单。这是完全错误地。


作者这么想是因为没用过eclipse,上手直接intelliJ。IntelliJ相比eclipse,优势并不在于所谓界面,所谓功能更大更全,而在于能极大的减少鼠标操作。比如生成get/set的导航过程,虽然都能用键盘操作完成,但是eclipse的这一段键盘过程比鼠标操作还要费劲,所以。

相关推荐

    sublime-monokai-theme:Emacs、Iterm2、终端、Intellij IDEA 等的 sublime-monokai 颜色主题

    Sublime Monokai 主题是一种广受欢迎的颜色主题,尤其在编程和代码编辑领域。这个主题以其深色背景和高对比度的颜色方案而闻名,能够减轻眼睛疲劳,...理解和应用这些主题不仅提升了代码编辑的美感,也能提高工作效率。

    想法设置:这是我保持同步的IntelliJ IDEA设置

    通过以上介绍,我们可以看出,优化和同步IntelliJ IDEA的设置是提升开发效率和保持一致性的重要步骤,尤其是对于使用JavaScript进行开发的程序员来说。了解和掌握这些设置能够帮助我们更好地利用这款强大的IDE,提升...

    Emacs 配置文件和脚本

    通过集成Gccsense,用户可以在Emacs中获得类似于Visual Studio或IntelliJ IDEA的开发体验。Gccsense利用GCC的编译信息来提供这些功能,因此它需要GCC在系统上可用并且正确配置。在描述中提到的链接,作者分享了他的...

    程序员工具书

    在源码分析和工具使用方面提供了深入的指导,帮助开发者提升工作效率和代码质量。通过链接(已省略)可以访问到更多关于本书的讨论和读者反馈。 在源码分析方面,这本书可能包括了以下知识点: 1. **源码阅读技巧*...

    AceJump::A_button_(blood_type)_selector:单字符搜索,选择和跳转

    这对于处理大量代码或需要频繁跳转的情况非常有用,极大地提高了程序员的工作效率。 在 Vim 或 Emacs 中,AceJump 可能会与其他导航命令结合使用,例如与搜索、替换、跳转到定义等功能配合,形成一套完整的代码导航...

    themecreator:https:mswift42.github.iothemecreator为intellij,textmate,atom,emacs,vim和gnome终端创建主题

    主题开发对于许多开发者来说是一个有趣的领域,因为它不仅可以提高工作效率,还可以根据个人喜好调整视觉效果。`themecreator` 的出现简化了这一过程,让非程序员也能轻松创建属于自己的主题。通过调整颜色、字体和...

    editor

    编辑器是程序员的“第二大脑”,选择合适的编辑器能够极大地提高工作效率。它不仅可以帮助程序员编写和调试代码,还可以通过集成各种插件和工具,实现自动化工作流,例如版本控制、代码质量检查、测试运行等。 四、...

    精品软件工具-- 适用于 Linux 下的应用程序,软件,工具和其他材料.zip

    在Linux操作系统中,选择合适的软件工具对于提升工作效率和优化用户体验至关重要。"精品软件工具-- 适用于 Linux 下的应用程序,软件,工具和其他材料.zip"这个压缩包文件很可能包含了多个经过精心挑选,适合Linux...

    linux开发的工具linux开发的工具linux开发的工具

    8. **集成开发环境(IDE)**:Eclipse、IntelliJ IDEA Community Edition、Visual Studio Code都是流行的跨平台IDE,它们提供代码编辑、调试、版本控制集成等功能。 9. **脚本语言支持**:Linux支持多种脚本语言,如...

    常用开发工具

    在IT行业中,开发工具是程序员日常工作中不可或缺的一部分。这些工具帮助开发者提高效率,优化工作流程,使得复杂的编程任务变得更为简单。"常用开发工具"这个主题涵盖了广泛的应用,包括代码编辑器、集成开发环境...

    常用编辑软件

    6. **IntelliJ IDEA**:作为一款专业的Java IDE,IntelliJ IDEA提供了强大的代码分析和智能编码辅助,同时支持其他多种语言。它在Java开发领域中有着极高的评价。 7. **PyCharm**:专为Python开发设计的IDE,由...

    config:所有配置文件,包括 emacs gitignore 有用的脚本 ..

    1. 忽略缓存文件和目录,如`.idea`(适用于IntelliJ IDEA)、`.vscode`(适用于Visual Studio Code)等。 2. 忽略日志文件和编译输出。 3. 对于特定语言项目,使用预定义的模板,如`.gitignore`模板库(GitHub上有很...

    2021-2022年收藏的精品资料软件工程师推荐10个开发者最常用的代码编辑器.docx

    在软件开发领域,选择合适的代码编辑器或集成开发环境(IDE)至关重要,它们能够显著提高程序员的工作效率。以下是一些备受开发者喜爱的代码编辑器,涵盖了从基础文本编辑到全功能IDE的各种需求: 1. **Aptana** - ...

    amo的编程小工具集合

    1. **代码编辑器**:可能是轻量级的文本编辑器,如Vim或Emacs,或者功能丰富的IDE(集成开发环境),如Visual Studio Code或IntelliJ IDEA,它们提供了语法高亮、代码自动完成、调试等功能。 2. **版本控制系统**:...

    语言必备工具

    这些工具的熟练使用,能帮助开发者提高工作效率,保证代码质量,同时也有利于团队协作,推动项目的成功实施。文件名“新建 文本文档 (2).txt”可能代表一个文本文件,可能包含代码、笔记或者配置信息,具体用途需要...

    代码查看工具(C,C++,JAVA,.NET代码查看工具)

    这些工具通常具有丰富的功能,如语法高亮、代码折叠、搜索定位、代码跳转、自动完成等,旨在提高程序员的工作效率和代码质量。 在C和C++编程环境中,虽然有许多IDE(集成开发环境)如Visual Studio、Eclipse或Code:...

    Editor

    - **多文件编辑**:同时处理多个文件,提高工作效率。 - **版本控制**:与Git等版本控制系统集成,便于版本管理和协作。 2. **流行编辑器介绍**: - **Visual Studio Code (VS Code)**:由微软开发,开源且跨...

    Source 配置文件

    标签 "编程配置文件" 进一步明确了这是一个专用于编程环境的配置,可能是IDE(集成开发环境)如Visual Studio Code、IntelliJ IDEA,或者是版本控制工具如Git的配置,也可能是文本编辑器如Vim或Emacs的配置。...

    C++编辑器(方便实用)

    而Eclipse和IntelliJ IDEA可能需要更多时间来熟悉。 8. **社区支持和文档**:活跃的社区和详尽的文档可以帮助解决问题,比如Stack Overflow上关于各种编辑器的问题和解答非常丰富。 具体到名为"TC"的压缩包文件,...

    (一)、linux下开发环境的搭建

    常见的选择有Vim、Emacs这类轻量级但功能强大的终端编辑器,也有像Visual Studio Code、IntelliJ IDEA这样的集成开发环境(IDE)。对于初学者,VS Code因其丰富的插件和良好的跨平台性而受到青睐。 3. **版本控制**:...

Global site tag (gtag.js) - Google Analytics