在另一个问题中,Mark高度评价了ide,说“有些人仍然不知道”为什么“他们应该使用一个……”。作为一个使用vim进行编程的人,并且在大多数/所有同事都使用vim或emacs进行所有工作的环境中工作的人,ide的优势是什么?我为什么要用它?

我相信这对一些人来说是一个棘手的问题,我对开始一场论战不感兴趣,所以请只回复你认为基于ide的方法更好的原因。我对听到为什么我不应该使用IDE不感兴趣;我已经不用了。可以这么说,我感兴趣的是听取“栅栏的另一边”的意见。

如果您认为ide可能适合某些类型的工作,但不适合其他类型的工作,我也很想知道为什么。


当前回答

我并不完全相信ide的使用。然而,我认为像Eclipse这样的优秀IDE最有价值的方面是良好集成的cscope风格的功能,能够快速理解大型代码库。

例如,在Eclipse中,您看到一个方法接受类型为FooBar的参数,但您不知道它的含义。与其浪费一分钟艰难地寻找定义(并冒着一路上各种分心的风险),只需选择FooBar,按F3,它就会打开相关的源文件,直到FooBar被定义的那一行。

在我看来,ide的缺点是它们给了您一个更大的学习曲线,除非您想使用绝对默认的配置。(Emacs也是如此。)

其他回答

ide基本上是:

编辑器/代码完成,重构和文档 调试器 文件系统资源管理器 scm的客户 构建工具

都在一个包里。

您可以使用单独的工具或出色的可编程编辑器和额外的工具,如Emacs(也可以使用Vim,但IDEbility IMO稍微少一些)来实现所有这些功能(以及更多功能)。

如果您发现自己经常在一个实用程序和下一个可以集成到环境中的实用程序之间切换,或者如果您缺少这里列出的一些功能(其他文章中有更完整的功能),那么可能是时候转移到IDE了(或者通过添加宏之类的方法来提高环境的ideability)。如果你已经用一个以上的程序构建了一个“IDE”(在我上面提到的意义上),那么就没有必要转移到一个真正的IDE。

IDE处理繁重的工作,节省了您的时间。

它将所有相关的项目文件保存在一起,使协作变得容易。

您通常可以将源代码控制集成到IDE中,从而节省更多的繁重工作,并进一步增强协作。

如果它有自动完成功能,它可以帮助你探索你所选择的语言,还可以节省一些输入。

基本上,IDE减少了程序员的非编程工作。

至于我为什么使用IDE,简单的回答是懒惰。

我是一个懒惰的人,当有简单的方法时,我不喜欢用困难的方法来做事情。IDE使生活变得简单,因此吸引了我们懒人。

当我输入代码时,IDE会自动检查代码的有效性,我可以突出显示一个方法并点击F1以获得帮助,右键单击并选择“转到定义”以直接跳转到定义的位置。我按下一个按钮和应用程序,与调试器自动附加启动为我。这样的例子不胜枚举。开发人员每天所做的所有事情都集中在一个屋檐下。

不需要使用IDE。只是不这么做要难得多。

Eclipse:

代码高亮显示,在后台编译,在执行过程中指出错误。

与javadoc集成,使用ctrl-Space提示变量名。

当我编译时,就会得到错误。我可以双击一个错误,它会显示相应的行。

很好地与JUnit集成,ctrl-F11运行测试,告诉我测试失败了。如果在输出窗口中出现异常,我可以双击某行,并将我带到失败的行。不仅如此,ctrl-F11还可以确保在运行测试之前编译所有内容(这意味着我永远不会忘记这样做)。

与ant集成。一个命令用于构建和部署应用程序。

集成调试器,包括web服务器的远程调试。

神奇的重构工具,搜索一段代码的引用。帮助我了解改变的影响。

总而言之,这让我更有效率。

It's really VERY simple. But this answer is a bit of a paradox in that I am discussing something only EMBEDDED level developers ever encounter. The reason this is an odd view is that frankly when I was doing embedded work (the brief time I was making any real money) an IDE would be down right STRANGE and most of your coworkers would wonder why you can't remember enough about SNMP/ASN.1 or whatever protocol you were dealing with to just /do your job/. BUT you can NOT, as far as I know, do a graphical simulation of what your microcontroller is doing in something like /real time/ without an "IDE".