我为什么要使用IDE?

时间:2008-10-16 11:41:46

标签: vim emacs ide

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

我确信这对某些人来说是一个充满争议的问题,我对开始一场火焰战并不感兴趣,所以请回复你认为基于IDE的方法优越的原因。我没有兴趣听到为什么我不应该使用IDE;我已经不使用了。我有兴趣听到“篱笆的另一边”,可以这么说。

如果您认为IDE可能适用于某些类型的工作而不适用于其他类型的工作,我也有兴趣了解原因。

36 个答案:

答案 0 :(得分:536)

这实际上取决于您使用的语言,但在C#和Java中,我发现IDE对以下内容有益:

  • 快速导航到类型而无需担心命名空间,项目等
  • 通过将成员视为超链接导航到成员
  • 当您无法记住所有成员的名字时自动完成
  • 自动生成代码
  • 重构(大规模的)
  • 组织导入(使用C#中的指令自动在Java中添加适当的导入)
  • 警告你自己输入(即某些错误甚至不需要编译周期)
  • 将鼠标悬停在某些内容上以查看文档
  • 以有用的方式同时在屏幕上查看文件,错误/警告/控制台/单元测试等和源代码
  • 从同一窗口轻松运行单元测试
  • 集成调试
  • 集成源控制
  • 直接从错误详细信息导航到编译时错误或运行时异常发生的位置。
  • ETC!

所有这些都节省了时间。他们是我可以手动完成的事情,但更痛苦:我宁愿做编码。

答案 1 :(得分:98)

代码完成。它有助于探索代码。

答案 2 :(得分:84)

关于我使用IDE的原因的简短回答是懒惰。

我是一个懒惰的灵魂,当有一种简单的方法时,我不喜欢以困难的方式做事。 IDE让生活更轻松,吸引我们懒惰的人。

当我输入代码时,IDE会自动检查代码的有效性,我可以突出显示方法并按F1获取帮助,右键单击并选择“转到定义”直接跳转到定义的位置。我点击了一个按钮,启动了自动连接调试器的应用程序。所以这个名单还在继续。开发人员日常所做的所有事情都集中在一个屋檐下。

无需使用IDE。要做的事情要艰难得多。

答案 3 :(得分:55)

当“文本编辑器”真的是emacs时,我认为做经典的“文本编辑器和控制台窗口与IDE”是不公平的。 IDE的典型功能大多数都在emacs中。或许它们甚至起源于那里,现代IDE主要是界面改进/简化。

这意味着对于原始问题,答案并不那么明确。这取决于如何有关网站的人使用emacs,如果他们主要使用它作为文本编辑器,或者他们全力以赴并使用自定义脚本,学习相关模式的命令,知道关于代码标记等等。

答案 4 :(得分:49)

我从相反的方向来看这个问题。我在Makefile + Emacs的土地上进行编程,只有很少的进站。从我最早的DOS编译器,Microsoft Quick C,我有一个IDE来自动化。我在Visual C ++ 6.0上工作了很多年,当我毕业于Enterprise Java时,我与Borland JBuilder合作,然后选择了Eclipse,这对我来说非常有效。

在我最初的自学,大学和现在的职业生涯中,我逐渐了解到,在IDE中完成的任何主要软件开发都会适得其反。我这样说是因为大多数IDE都希望你在他们的特有的I-control-how-the-world-works风格中工作。你必须按照他们的方式对项目进行切片和切块。您可以使用奇怪的对话框管理项目构建。大多数IDE管理复杂的项目之间的依赖关系很差,并且依赖关系很难100%工作。除非我做了一个Clean / Rebuild All,否则我一直处于IDE无法生成代码的工作版本的情况。最后,很少有一种干净的方法可以将您的软件从开发中移到IDE中的QA或Production等其他环境中。这通常是一个让您构建所有部署单元的狂欢,或者您有一些IDE供应商为您提供捆绑的笨拙工具。但同样,该工具通常要求您的项目和构建结构绝对符合他们的规则 - 有时这对您的项目要求不起作用。

我了解到,要与团队进行大规模开发,如果我们使用IDE开发代码并使用手动编写的命令行脚本完成所有构建,那么我们可以是最高效的。 (我们喜欢用于Java开发的Apache Ant。)我们发现,从IDE运行我们的脚本只是复杂构建的点击费用或自动化噩梦,它更容易(并且破坏性更小)alt + tab out to a shell并在那里运行脚本。

手动构建要求我们错过现代IDE中的一些细节,例如后台编译,但我们获得的更为关键:可以在多个环境中生活的简洁易用的构建。所有那些敏捷人员谈论的“一键构建”?我们有它。我们的构建脚本也可以由持续集成系统直接调用。通过持续集成管理构建允许我们更正式地将代码部署分阶段迁移到不同的环境,并且当有人检查破坏构建或单元测试的错误代码时,几乎立即就知道。

事实上,我从IDE中扮演的角色并没有太严重伤害我们。 Eclipse中的intellisense和重构工具仍然是完全有用和有效的 - 后台编译仅用于支持这些工具。而且,Eclipse独特的项目切片已经成为一种非常好的方式,以一种每个人都能理解的方式精神分解我们的问题集(尽管我的口味仍然有点冗长)。我认为关于Eclipse最重要的事情之一是优秀的SCM集成,这就是让团队开发变得如此愉快的原因。我们使用Subversion + Eclipse,这非常高效,很容易培养我们的员工成为专家。

答案 5 :(得分:24)

作为您在问题中突出显示的回复的作者,并且承认有点迟到了,我不得不说,在列出的众多原因中,专业开发人员的生产力是一个最受尊敬的技能。

通过生产力,我的意思是能够以最佳结果有效地完成工作。 IDE在许多级别上启用此功能。我不是Emacs专家,但我怀疑它缺乏主要IDE的任何功能。

企业应用程序中的关键踏脚石的设计,文档,跟踪,开发,构建,分析,部署和维护都可以在IDE中完成。

如果你有选择的话,为什么你不会使用如此强大的东西呢?

作为一项实验,请让自己使用IDE,例如30天,看看你的感受。我很乐意阅读你对这次经历的看法。

答案 6 :(得分:20)

拥有IDE具有以下优势:

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

还有更多,也许你应该试一试。

答案 7 :(得分:19)

IDE基本上是:

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

所有在一个包中。

你可以使用单独的工具或者只是一个很棒的可编程编辑器和额外的工具来完成所有这些(以及更多),例如Emacs(Vim也是如此,但IMO的可用性稍差)。

如果您发现自己在一个实用程序和下一个可以集成到环境中的实用程序之间切换很多,或者如果您缺少此处列出的某些功能(在其他帖子中更完整),也许是时候转到IDE(或通过添加宏来提高环境的可用性或不提高)。如果您使用多个程序构建了自己的“IDE”(在上面提到的意义上),则无需转移到实际的IDE。

答案 8 :(得分:11)

蚀:

让代码高亮显示,在后台编译,指出我的错误。

与javadoc集成,使用ctrl-Space建议变量名。

当我编译时,我在那里得到错误。我可以双击错误,它会显示相应的行。

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

与ant整合。一个用于构建和部署应用程序的命令。

与调试器集成,包括远程调试Web服务器。

FANTASTIC重构工具,搜索对一段代码的引用。帮助我了解变革的影响。

总而言之,它让我更有成效。

答案 9 :(得分:9)

我使用Emacs作为我开发和邮件/新闻的主要环境大约10年(1994-2004)。我在2004年强迫自己学习Java时发现了IDE的强大功能,令我惊讶的是我真的很喜欢IDE(IntelliJ IDEA)。

我不会因为其中很多已经被提到的具体原因而去了 - 只记得不同的人喜欢不同的功能。我和一位同事使用了相同的IDE,我们两个人只使用了一小部分可用的功能,而且我们不喜欢彼此使用IDE的方式(但我们都喜欢IDE本身)。

但是我想要关注的是Emacs / Vim相关环境的IDE有一个优势:您花费更少的时间来安装/配置所需的功能。

使用Wing IDE(对于Python)我准备在安装后15-20分钟开始开发。不知道我需要多少小时才能获得我用完和运行Emacs / Vim的功能。 :)

答案 10 :(得分:9)

这绝对可以提高我的生产力。我甚至在Vista上的Visual Studio中编写Linux应用程序,然后使用Linux虚拟机来构建它们。

您不必记住函数或方法调用的所有参数,一旦开始键入它,IDE将向您显示所需的参数。您可以使用向导来设置项目属性,编译器选项等。您可以搜索整个项目中的内容,而不仅仅是当前文档或文件夹中的文件。如果您遇到编译器错误,请双击它,它会直接到达有问题的行。

模型编辑器等工具的集成,连接和浏览外部数据库,管理代码集“片段”,GUI建模工具等。所有这些都可以单独进行,但是将它们全部保存在同一个开发环境中大量的时间并使开发过程更有效地流动。

答案 11 :(得分:8)

根据开发人员试图完成的任务,IDE 可以成为“优越”选择。

文本编辑器可以“优越”,因为IDE通常面向一种(或少量选择)语言。

如果开发人员将大部分时间花在单一语言或相关语言的“群集”(如C#和T-SQL)上,则在一个操作系统中进行GUI设计,调试,智能感知,重构等。好的IDE提供的工具非常引人注目。例如,如果您花费大部分时间在VB.NET中工作,偶尔可能会使用一些T-SQL,那么在Windows环境中,如果不看Visual Studio或类似的IDE,那将是非常愚蠢的

我对那些喜欢IDE或文本编辑器的人没有任何偏见,如果学得很好,可以非常高效和有用

答案 12 :(得分:8)

不同的人可能有不同的原因。对我来说,这些都是优点。

  1. 为项目提供综合感。例如,我将在单个视图中包含所有相关的项目文件。
  2. 提供更高的代码生产力
    1. 语法突出显示
    2. 参考议会
    3. 智能感知
    4. 数据库和相关UI文件的集中视图。
    5. 调试功能
  3. 一天结束时,它可以帮助我编写比在记事本或写字板中更快的代码。这是我喜欢IDE的一个很好的理由。

答案 13 :(得分:7)

我认为这主要与开发人员的意识范围有关。 IDE提供了开发人员工作环境的宏观视图。您可以同时查看类层次结构,引用的资源,数据库模式,SDK帮助引用等。由于许多事情受到影响,影响您的击键,以及不断扩大的体系结构和架构交叉点,因此它变得越来越困难。一次只从一个代码岛工作。

OTOH,“只有我和vim以及手册页”给了我一个更精简的微观 - 但又强烈而精确 - 对我工作的看法。如果我有一个设计良好,分区很好,稀疏耦合的高度内聚的代码库,用一种语言构建,可以使用一组静态库,而不是典型的情况,特别是当开发团队规模增长并重塑代码结构时,这是可以的。随着时间的推移,距离和个人偏好。

我目前正在开发Flex和.NET项目。关于Flex的一个更好的事情是,实现标准事物的方式很少 - 从数据库中提取数据,打开/关闭/读取/写入文件等等(但我使用的是Flex Builder / Eclipse IDE) - 像VS一样典型的重量级例子,因为我还在学习基础知识而且我需要训练轮。一旦我对自己的模式充满信心,我希望能够回归到vim。)在这个视图中,我可以做什么我需要通过真正了解一些事情来做专业的工作。

OTOH,我无法想象用.NET来达到这一点,因为我期望保持的观点不断扩大和转变。概念完整性要少得多,而且几个月内项目上的几个开发人员的一致性要低得多 - 但IDE支持这一点,也许会鼓励它。因此,开发人员确实需要(并且可以更容易地)充分了解更多内容。这也有助于他们回答(甚至理解)StackOverflow上更高百分比的问题。即我们可以有更深的知识堆栈。我们可以回复各种各样的求助广告。

事情在两个方向都可能太过分了。也许只有“仅限编辑”的范围,就像“如果你只有一把锤子,一切看起来像钉子”。使用IDE方法,无论您想要紧固在一起,您都可以选择各种紧固件和相关工具范围 - 零件/锤子,螺丝/螺丝刀,螺栓/扳手,粘合剂/胶枪/夹具,磁铁,以及随时随地 - 一切都在您的指尖(使用向导帮助您入门)。

答案 14 :(得分:5)

IntelliSense,集成的调试器和即时窗口让我的工作效率更高(Visual Studio 2008)。随着一切都在我的指尖,我可以在编写代码时保留绝大多数巨大的项目。微软可能会继续放弃他们的操作系统,但Visual Studio是有史以来最好的产品之一。

答案 15 :(得分:5)

除了其他答案之外,我喜欢将使用ViPlugin for {{{3>}之类的内容将IDE的开发功能与Vim的编辑功能结合起来{3}}

答案 16 :(得分:5)

不要认为它是独家的。使用IDE提供它所带来的好处,并在需要认真关注时切换到vim /首选文本编辑器。

我发现IDE更适合重构,浏览和调试以及搞清楚要做什么。然后在IDE中完成小的事情,我要翻转的大件事情来完成这项工作。

答案 17 :(得分:4)

我不明白你在问什么。您问“我应该使用IDE而不是......”,但我不明白替代方案是什么 - Vim并且Emacs可以完成任何IDE将为您提供的许多功能。他们没有处理大型IDE的唯一方面可能是UI设计师。然后你的问题归结为“我应该使用什么IDE”,并为Vim和Emacs这个更简单的领域提供参数。

答案 18 :(得分:3)

我几乎只使用Vim(几乎因为我现在正在尝试学习emacs)用于我所有的开发工作。我认为纯粹的直观性(当然来自GUI)是人们喜欢使用IDE的主要原因。通过直观,几乎不需要工具的学习开销。学习开销越小,他们就越能完成工作。

答案 19 :(得分:3)

我可以考虑使用IDE的几个原因:

  • 综合帮助是最受欢迎的。
  • 带有Visual Studio预览的内置Refactor
  • IntelliSense,语法高亮,大型项目的导航易用性,集成调试等等(尽管我知道使用插件,您可以通过EmacsVim获得大量此类内容)。
  • 此外,我认为IDE现在有更广泛的用户群,可能有更多的人为他们开发插件,但我可能错了。

坦率地说,我喜欢我的鼠标。当我使用纯文本编辑器时,它会变得孤独。

答案 20 :(得分:3)

基于GUI的IDE(如Visual Studio和Eclipse)与基于文本的IDE(如Emacs或vim)相比具有以下优势,因为它们具有显示功能:

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

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

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

像Emacs和vim这样的基于文本的IDE可以添加代码完成和重构等功能,因此从长远来看,它们的主要限制是基于文本的显示模型。

答案 21 :(得分:3)

对我来说,IDE更好,因为它允许更快的代码导航,如果你有想法实现的话,这很重要。 假设您不使用IDE,则到达目的地需要更长的时间。你的想法可能会更频繁地被中断。这意味着必须按下更多点击/更多键。 人们必须更多地关注如何实施事物的思想。 当然,你也可以写下来,但必须在设计和实现之间跳槽。 此外,GUI设计师也有很大的不同。如果你手工完成,可能需要更长时间。

答案 22 :(得分:3)

IDE允许一个人更快,更轻松地工作......我注意到我花了很多时间在一个简单的文本编辑器中导航代码...

在一个好的IDE中,如果IDE支持跳转到函数,到以前的编辑位置,转换到变量,那个时间就会停止...而且,一个好的IDE会减少尝试不同语言功能和项目的时间,作为开始时间可以很短。

答案 23 :(得分:2)

我使用的主要原因是当代码超过100个文件时。

虽然ctags可以完成这项工作,some IDEs可以非常快速地导航文件。

当你需要做很多工作时,它可以节省时间。

答案 24 :(得分:2)

节省开发时间
通过提供集成调试,智能感知等功能,使生活更轻松。

有很多,但建议使用一个,它们是显而易见的。

答案 25 :(得分:2)

我不确定文本编辑器和IDE之间有明确的分界线。你在规模的一端有类似记事本,在另一端有最好的现代IDE,但中间有很多东西。大多数文本编辑器都有语法高亮显示;针对程序员的编辑器通常具有各种其他功能,例如简单的代码导航和自动完成。 Emacs甚至可以让您集成调试器。甚至十年前的IDE所拥有的功能远远少于帮助程序员的功能,而不是你现在对一个严肃的文本编辑器的期望。

答案 26 :(得分:2)

对我来说,它只是我们在终端过去的好时光所做的一切的GUI版本。我总是同意IDE并不是非常优越,因为它们隐藏了很多东西,特别是关于链接的东西,但它们在某些情况下具有显着的优势,例如对于像Qt这样的某些开发平台。

某些类似IDE的视觉效果甚至似乎在您键入时解析您的代码,并在您编译之前检测错误:似乎逻辑只有IDE可以与编译器紧密合作以立即检测键入源中的问题。

我的狂热回答是存在IDE /命令行火焰战,这只是因为从标准化的角度来看,C / C ++可执行文件的构建处理不是很好,与D语言不同;每个平台都以自己的方式处理编译/链接/等等,因此为了减少它们制作IDE的麻烦。

从您的角度来看,使用命令行可能会更简单,如果只有一个带有标准选项的编译器,那本来就很容易,但事实是C / C ++很灵活,所以最后,所有平台都以自己的方式完成,因此IDE不会浪费解释如何做到这一点。

如果您可以了解可执行文件如何与内核进行通信,或者您对编译器设计有任何了解,可能有一种方法可以使用正确的命令行,但我怀疑您有。

微软或苹果公司,他们都是邪恶的,必须提出一种直接的方式来构建应用程序而不必详细说明,并且由于构建应用程序直接取决于操作系统的体系结构,因此很难“标准化“作为命令行。

简单,大而复杂的应用程序,你不想深入研究它的作用 - > IDE,小块软件或简单的系统软件设计 - >命令行。当然,除了那些嵌入Makefile的漂亮的库,但这是另一个故事。

此外,我认为在交付的应用程序与具有某种接口或直接绑定到操作系统的GUI或某些东西有关时使用IDE,所以同样,它也适用于将使用UI的用户/ GUI不知道它是如何工作的,而编程系统的人将不需要它。

IDE只是现代的狗屎,但我认为100年后命令行仍然存在。

答案 27 :(得分:1)

我喜欢IDE,因为它在我的指尖提供了很多功能。编辑/编译/项目中文件的可见性是我在IDE中所重视的一切。我现在使用Visual Studio,但在以前的生活中我使用SlickEdit,发现它使我的开发过程比我不使用它时更加简化。

答案 28 :(得分:1)

我并没有完全出售IDE的使用。但是,我认为良好的IDE最有价值的方面,如Eclipse,是一个集成良好的Cscope式功能,可以快速理解大型代码库。

例如,在Eclipse中,您看到一个方法接受类型为FooBar的参数,但您不知道它的含义。而不是浪费一分钟找到定义的困难方式(并冒着各种各样的干扰风险),只需选择FooBar,点击 F3 ,然后打开相关的源文件到FooBar的那一行是定义。

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

答案 29 :(得分:1)

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

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

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

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

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

答案 30 :(得分:1)

这在很大程度上取决于你正在做什么以及你正在做什么语言。就个人而言,我倾向于不使用IDE(或者“我的IDE包含3个运行vim的xterms,一个运行数据库客户端,以及一个带有bash提示或拖尾日志“,取决于你为我的大部分工作定义”IDE“的宽度,但是,如果我发现自己正在开发一个平台原生的GUI,那么我会找到一种语言 - 适当的IDE即时 - IMO,IDE和图形表格编辑显然是相互制作的。

答案 31 :(得分:1)

答案 32 :(得分:1)

在决定是否使用IDE时,只需要考虑一件事,那就是它是否会提高你的工作效率。

简短的问题如此简短的答案:)

答案 33 :(得分:0)

我更喜欢IDE,因为它允许我集成编辑/编译/调试,从错误到行的单击跳转产生错误。此外,它允许多个窗格的信息与OS标准接口显示信息。简而言之,它为用户提供了一个带有现代输出接口的基于鼠标的输入接口,而不是依靠20世纪70年代的技术和接口来提供帮助。

IDE有更复杂的用户和用途,我并不声称使用它们或了解它们。当我需要时,我会学习它们。

答案 34 :(得分:0)

简而言之,IDE通过简单的编辑器提供了额外的省时功能。

答案 35 :(得分:-2)

使用IDE的一个很好的理由是它们是生成现代软件的可接受方式。如果你不使用它,那么你可能会使用像vi和emacs这样的“老式”东西。这可能会导致人们得出结论 - 可能是错误的 - 你会陷入困境并无法适应新的工作方式。在软件开发这样的行业中 - 想法可能在几个月内过时 - 这是一个危险的状态。它可能会严重损害您未来的就业前景......