IDE还是编辑器

Published: 13 Mar 2014 Category: Others

你是用编辑器还是IDE?你是个铁杆的码农,还是使用IDE的娇气的开发人员?你有定制过你的vi或者emacs来提高你的工作效率么?还是说你觉得Emacs就是个废物,至少对Java来说是这样。不管怎样,这都是个有趣的话题——使用IDE和使用定制化的文本编辑器(vim/emacs/sublime...)的优缺点都是什么。当然了,我得承认,IDE和编辑器之间的区别并不是那么明显。

我们先来看一个简单的例子——Java(或者C#)。很明显,在这里IDE以压倒性的优势领先,因为它有着诸如重构,调试,分层,框架集成,构建工具这些强大的特性。在IDE以外的任何工具写Java程序都只应限于教学目的,否则的话可就损失大了。

不过对于那些IDE不那么成熟,或者缺少某些特性的语言而言,就没有这么绝对了。

就说说Groovy吧,一个JVM语言。它的IDE有语法着色,自动补全,文件跳转快捷键的功能,这些东西文本编辑器也有。在文本编辑器里你还可以很方便的加上个shell脚本来运行你的grails应用,然后再跑些selenium测试,而在IDE里就痛苦多了。所以或许还是文本编辑器略胜一筹?

另外,IDE也可能导致一些问题。新手可能会提交绝对路径进行编译。IDE也许对某个框架支持的很好,但在最近一个版本中少了一个参数,你就不得不自己想办法解决。IDE很容易就能生成一系列代码,不过后面可能变得很难维护。这可能只是个很小的问题,但也是个问题——而编辑器是不会有这些问题的,因为它什么也没干。

我们来研究下如何进行定制化。好的文本编辑器能支持自定义的插件,以便让你能提升自己的体验。这很重要。直到我切换到IDEA我才意识到alt加方向键并不能整行移动,就移动几个空格符。光标停留在类上也不会出现包名。一些很小的改变对我来说都很重要。所幸的是,IDEA的这些都是可配置的,不过它也可能没有。如果你想写一个插件,你得知道OSGi,SWT,很复杂的插件API是吧。为这点小事写个插件真是要了命了。

因此我很希望IDE有这种个功能——可以很容易定制。随便删除一个文件,都应该可以轻松的定制化。当然了,你得自己承担风险,也许没过几小时你就在头疼哪两个文件有冲突或者IDE又阻塞住了,但应该得有这样的功能。

回想一下你加个脚本就能跑selenium测试的例子。很多编辑器的定制化都面临这个问题,这种功能到底需要吗?它难道不应该在构建工具里面?很多这样的功能确实是在构建工具里的,比如代码生成,一键部署,执行发布,运行功能测试等等。我之所以说它们是属于构建工具,因为持续集成的服务器就应该实现这些。

除了那些你想加到编辑器里的插件,那些能让代码编写和工程导航更方便的功能,别的东西应当是和团队成员共享的。每个人有一个单独的仓储,然后大家分别在多个分支上测试?这样做的话太费精力,而且各做各的还可能会导致团队成员间的不一致。这样做的话你还得每做一个工程都带上你整套文本编辑器配置,然后别人的配置可能还和你有冲突。我没法举一个具体的例子,因为我从来没重度的定制过一个文本编辑器,不过我个人感觉你不应该定制的太严重,除非你是单兵作战。关于定制的一个衡量标准应该是说,你在切换不同的语言的同时又能保留那些提高生产力的小功能。这样做是对的,毕竟编辑器没有IDE的操作性那么强。很多好的IDE能显著的提高你的生产力,而剩下的那20%就有点多余。

不管你同不同意上面的这些话,如果IDE提供插件能轻松的进行定制的话,我估计没有什么理由要选用文本编辑器,除了那些已经习惯了编辑器的人们。任何IDE的功能都比文本编辑器要多得多,不过它缺乏灵活性和定制性。如果这个问题能得到有效的解决,毫无疑问应该选用IDE,即便是动态语言。当然了,这得是开源的IDE。

原创文章转载请注明出处:IDE还是编辑器

英文原文链接