首页 文章

我为什么要使用IDE? [关闭]

提问于
浏览
377

在另一个问题中,Mark高度评价IDE,并说"some people still just dont know "为什么" they should use one..." . 作为使用vim进行编程的人,并且在大多数/所有同事使用vim或emacs进行所有工作的环境中工作,IDE的优势是什么?我为什么要用一个?

我'm sure this is a charged issue for some people, and I'米对开始一场火焰战并不感兴趣,所以 please only reply with the reasons you believe an IDE-based approach is superior . 我'm not interested in hearing about why I shouldn' t使用IDE;我已经't use one. I'有兴趣听到"the other side of the fence",可以这么说 .

如果你认为IDE可能适合某些类型的工作而不适合其他工作,我也很想知道为什么 .

30 回答

  • 96

    代码完成 . 探索代码有很大帮助 .

  • 20

    关于我为什么使用IDE的简短回答是懒惰 .

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

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

    无需使用IDE . 这不是更难的工作 .

  • 2

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

    • 快速导航到类型而无需担心命名空间,项目等

    • 通过将成员视为超链接导航到成员

    • 自动完成时,你不记得所有成员的名字

    • 自动代码生成

    • 重构(大规模的)

    • 组织导入(使用C#中的指令自动在Java中添加适当的导入)

    • 类似于警告(即某些错误甚至不需要编译周期)

    • 将鼠标悬停在某些内容上以查看文档

    • 以有用的方式同时在屏幕上保存文件,错误/警告/控制台/单元测试等视图和源代码

    • 易于在同一窗口中运行单元测试

    • 集成调试

    • 集成的源代码控制

    • 直接从错误详细信息导航到发生编译时错误或运行时异常的位置 .

    • 等等!

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

  • 532

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

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

  • 8

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

    在我最初的自学,大学和现在的职业生涯中,我逐渐了解到,在IDE中完成的任何主要软件开发都会适得其反 . 我这样说是因为大多数IDE都希望你能够以他们特有的I-control-how-the-world-works风格工作 . 你必须按照他们的方式对项目进行切片和切块 . 您可以使用奇怪的对话框管理项目构建 . 除非我执行了Clean / Rebuild All,否则大多数IDE 's manage complex build dependencies between projects poorly, and dependencies can be difficult to get working 100%. I have been in situations where IDE' s都不会生成我的代码的工作版本 . 最后,通常需要点击一下才能完成所有部署单元的构建,或者根据项目的要求进行工作 .

    我了解到,要与团队进行大规模开发,如果我们使用IDE开发代码并使用手动编写的命令行脚本完成所有构建,那么我们可以是最高效的 . (我们喜欢用于Java开发的Apache Ant . )我们发现从IDE运行我们的脚本只是对于复杂构建而言,单击节目或自动化噩梦,将选项卡添加到shell并在那里运行脚本会更容易(并且破坏性更小) .

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

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

  • 84

    作为您在问题中突出显示的回复的作者,并且承认有点迟到了,我不得不说,在列出的众多原因中,专业开发人员的 生产环境 力是其中之一备受推崇的技能 .

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

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

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

    作为一个实验,让自己使用IDE,比如30天,看看你的感受 . 我很乐意阅读你对这段经历的看法 .

  • 1

    拥有IDE具有以下优点:

    • 编译通常是"on the fly",这意味着不再需要切换到命令行进行编译

    • 集成调试,在IDE中具有调试功能意味着步调试器实际使用您的就地编辑器直观地显示执行了哪些代码

    • IDE 's usually have more semantic knowledge of the language you'重新开始工作,可以在输入时显示可能出现的问题 . 重构比"search replace"强大得多 .

    还有更多,也许你应该尝试一下 .

  • 19

    IDE基本上是:

    • 编辑器w /代码完成,重构和文档

    • 调试器

    • Filesystem explorer

    • SCMS客户端

    • 构建工具

    所有在一个包中 .

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

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

  • 55

    日食:

    代码高亮,在后台编译,指出我的错误,因为我继续 .

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

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

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

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

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

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

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

  • 11

    它肯定会导致我的 生产环境 力提高 . 我甚至在Vista上的Visual Studio中编写Linux应用程序,然后使用Linux虚拟机来构建它们 .

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

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

  • 1

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

    我不会讨论具体的原因,因为这里已经提到了很多 - 只记得不同的人喜欢不同的功能 . 我和一位同事使用了相同的IDE,我们两个人只使用了一小部分功能,我们不喜欢使用IDE的方式(但我们都喜欢IDE本身) .

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

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

  • 9

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

    • 为项目提供综合感 . 例如,我将在单个视图中包含所有相关的项目文件 .

    • 提供更高的代码 生产环境 力

    • 语法高亮显示

    • 参考大会

    • 智能感知

    • 数据库和相关UI文件的集中视图 .

    • 调试功能

    在一天结束时,它可以帮助我编写比我在记事本或写字板中更快的代码 . 这是我更喜欢IDE的一个很好的理由 .

  • 2

    根据开发人员试图完成的任务,IDE可以是一个基于选择的选项 .

    文本编辑器可以是'superior',因为IDE通常面向一种(或少量选择)语言 .

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

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

  • 1

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

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

    我目前正在从事Flex和.NET项目 . 关于Flex的一个更好的事情是,有几种不同的方法可以完成一个标准的东西 - 从数据库中提取数据,打开/关闭/读/写文件等等(但我使用的是Flex Builder / Eclipse IDE - 一个典型的重量级示例,比如VS,因为我还在学习基础知识,我需要训练轮 . 一旦我对自己的模式充满信心,我希望能够回归到vim . )在这种观点中,我可以通过了解一些非常好的事情来做我需要做的事情 .

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

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

  • 1

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

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

  • 8

    我不明白你在问什么 . 你问"Should I use an IDE instead of...",但我不明白替代方案是什么 - Vim和Emacs实现了IDE会给你的许多功能 . 他们没有处理大型IDE的唯一方面可能是UI设计师 . 然后你的问题归结为简单"what IDE should I use"与Vim和Emacs更简单的领域争论 .

  • 3

    除了其他答案之外,我喜欢将IDE的开发能力与Vim的编辑能力结合使用ViPlugin for Eclipse .

  • 24

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

  • 7

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

  • 9

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

    • WYSIWYG用于GUI设计的预览和实时编辑

    • 高效的属性编辑器(例如,使用GUI调色板选择颜色,包括定位渐变停止等)

    • 代码大纲,文件相互关系等的图形描述

    • 更有效地利用屏幕空间来显示断点,书签,错误等

    • 使用OS和其他应用程序更好地拖放支持

    • 综合编辑图纸,图像,3D模型等

    • 显示和编辑数据库模型

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

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

    基于文本的IDE就像Emacs和vim可以随着时间的推移添加代码完成和重构等功能,因此从长远来看,它们的主要限制是基于文本的显示模型 .

  • 4

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

  • 5

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

    有很多,但会建议使用一个,他们是显而易见的 .

  • 4

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

  • 3

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

    虽然ctags可以完成这项工作,但是some IDEs有一个非常好的方法可以轻松地快速导航文件 .

    当您有大量工作要做时,它可以节省时间 .

  • 2

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

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

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

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

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

    微软或苹果,他们都是邪恶的,必须提出一种直接的方式来构建应用程序而不需要输入细节,并且由于构建应用程序直接取决于操作系统的体系结构,因此它几乎不会像“标准”那样命令行是 .

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

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

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

  • 2

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

    在一个好的IDE中,如果IDE支持跳转到函数,以前的编辑位置,转换到变量,那个时间就会缩短......另外,一个好的IDE会缩短尝试不同语言功能和项目的时间,作为启动时间可以很小 .

  • 3

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

  • 49

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

    简短的问题这么短的答案:)

  • 4

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

  • 2

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

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

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

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

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

相关问题