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

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

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


当前回答

这取决于你使用的语言,但在c#和Java中,我发现ide对以下方面有好处:

Quickly navigating to a type without needing to worry about namespace, project etc Navigating to members by treating them as hyperlinks Autocompletion when you can't remember the names of all members by heart Automatic code generation Refactoring (massive one) Organise imports (automatically adding appropriate imports in Java, using directives in C#) Warning-as-you-type (i.e. some errors don't even require a compile cycle) Hovering over something to see the docs Keeping a view of files, errors/warnings/console/unit tests etc and source code all on the screen at the same time in a useful way Ease of running unit tests from the same window Integrated debugging Integrated source control Navigating to where a compile-time error or run-time exception occurred directly from the error details. Etc!

所有这些都节省时间。这些事情我可以手动完成,但会更痛苦:我宁愿编写代码。

其他回答

拥有IDE有以下优势:

编译通常是“动态的”,这意味着不再切换到命令行进行编译 调试是集成的,在IDE中拥有调试意味着步进调试器实际上使用就地编辑器来直观地显示执行了哪些代码 IDE通常对您正在使用的语言具有更多的语义知识,并且可以在输入时向您显示可能出现的问题。重构比“搜索替换”强大得多。

还有很多,也许你应该试试。

Eclipse:

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

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

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

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

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

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

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

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

IDE可以让人更快更容易地工作……我注意到我花了很多时间在一个简单的文本编辑器中浏览代码……

在一个好的IDE中,如果IDE支持跳转到函数,跳转到之前的编辑位置,跳转到变量……此外,一个好的IDE可以减少试验不同语言特性和项目的时间,因为启动时间可以很短。

基于gui的ide(如Visual Studio和Eclipse)比基于文本的ide(如Emacs或vim)有几个优势,因为它们具有显示功能:

所见即所得预览和实时编辑的GUI设计 高效的属性编辑器(例如;使用GUI调色板选择颜色,包括定位渐变停止等) 代码概要、文件相互关系等的图形化描述 更有效地使用屏幕空间来显示断点、书签、错误等 更好的拖放支持操作系统和其他应用程序 集成编辑图纸、图像、3D模型等 显示和编辑数据库模型

基本上,使用基于gui的IDE,你可以在屏幕上获得更多有用的信息,你可以像查看文本部分一样轻松地查看/编辑应用程序的图形部分。

作为开发人员,最酷的事情之一是编辑一个计算一些数据的方法,并看到代码的实时输出以图形方式显示在另一个窗口中,就像你的用户在运行应用程序时看到的那样。现在,这就是所见即所得编辑!

基于文本的ide(如Emacs和vim)可以随着时间的推移添加代码补全和重构等特性,因此从长远来看,它们的主要限制是基于文本的显示模型。

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

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

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