当前位置:  开发笔记 > 编程语言 > 正文

我为什么要使用IDE?

如何解决《我为什么要使用IDE?》经验,为你挑选了17个好方法。

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

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

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



1> Jon Skeet..:

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

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

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

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

自动代码生成

重构(大规模的)

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

警告你自己输入(即某些错误甚至不需要编译周期)

将鼠标悬停在某些东西上以查看文档

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

易于从同一窗口运行单元测试

集成调试

集成的源控制

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

等等!

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


当它以这种方式行事时,我会说Vim算作IDE.
我猜emacs是一个IDE,然后;)
警告你为什么类型,我假设John Skeet需要这个来警告IDE试图纠正以下代码将是徒劳的尝试.
根据我的经验,Vim和Emacs在"真正的"IDE中缺少的最大的东西(是的,我知道它们可以是开发环境)可以作为类型的警告.这基本上意味着在编辑器中嵌入一个高级编译器,我认为它们不会达到这种级别的集成.
saua:你看过Flymake,http://flymake.sourceforge.net/?它至少为Emacs提供了一些警告 - 就像你一样
当我使用Emacs时,我使用pylint和gcc以及flymake来为Python和C做"我输入的警告".
对于大多数流行语言来说,几乎所有这些也可以在Vim中完成.集成调试需要一些工作,但它就在那里.
@Joachim Sauer - 当你输入.el时,Emacs会发出警告(我知道它适用于C++,我认为其他一些语言也是如此);)
@Joachim:还有js2-mode for JavaScript在后台运行并警告你语法错误和常见(语法上有效)的错误,比如没有用var声明一个局部变量,缺少一个分号或没有副词的语句 - 效果.
使用正确的插件(或者在emacs中调用它们的任何东西),它肯定是.如果你可以在其中构建和调试,它是一个IDE :)
我最近不得不回到使用非PHP'IDE'(新工作没有一个:S),这是非常痛苦的.当你不得不离开时,你会感激它能节省多少时间!我通常使用Komodo IDE for php dev,这太棒了.只需按住Ctrl键单击一个函数或类调用并被带到它的能力是一个真正的节省时间!

2> Darren..:

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


我会说代码完成而不是Intellisense
不只是探索代码.如果我输入一个.没有任何东西弹出,这意味着我的代码出了问题; 我通常甚至不必编译来找到它.如果我输入一个.并且没有达到我的期望,这意味着我使用了错误的类型,或忘记了内部或公共内容,或其他一些问题; 我不必跑去发现问题.Intellisense对于尽早发现错误特别有用.
然后,我可以按Ctrl + P,给我一个"vim"认为我可以使用的一大堆命令的下拉列表.

3> David Arno..:

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

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

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

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


这不仅仅是懒惰问题:) - IDE可以节省宝贵的时间,从而提高工作效率.

4> unwind..:

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

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


我认为在强大的文本编辑器中配置类似IDE的功能所花费的时间可能更好地使用开箱即用的功能在IDE中进行编码.
@JF Sebastian:问题在于,为了提高产量,你必须学习IDE的细节,如果你要切换语言并使用很多不同的工具,它就会变得麻烦.我目前一直在学习vim,虽然一开始很难习惯,但是当我在不同的系统和许多不同的语言中找到它时,它会很快得到回报.
是的,这不是一个安全的概括.我将Emacs用于这些答案中提到的所有IDE功能.
@JFSebastian:我认为配置Emacs做IDE的工作要比配置IDE来做Emacs的东西,如导航,tramp,shell-mode,dired等等更有效率.
我像使用IDE一样使用vim.

5> 小智..:

我从相反的方向来看这个问题.在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风格.你必须按照他们的方式对项目进行切片和切块.您可以使用奇怪的对话框管理项目构建.大多数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,这非常高效,很容易培养我们的人员成为专家.


+1,引入构建内容的复杂性(至少通常是)是我倾向于厌恶IDE的最大原因之一

6> Mark..:

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

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

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

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

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


我认为人们不去寻求IDE的一个重要原因是他们的臃肿.如果你只是想做一个三明治,你不需要整个超市.
Emacs有一些功能,至少Eclipse缺少或隐藏得非常好.例如,能够选择一大块线并对其进行就地排序.编辑评论时,Emacs的fill-paragraph也很难被击败; Eclipse有类似的功能,但相比之下它非常弱.
根据我的经验,IDE不允许您使用键盘彻底和一致地与所有内容进行交互.此外,Emacs确实有许多IDE不具备的强大功能,从小而有用(矩形区域,嬉皮扩展,广泛的键盘导航)到相当主要(使用elisp的tramp,dired,transparent定制,键盘宏).我确定有些IDE具有这些功能,但我还没有看到它们.

7> Rolf..:

拥有IDE具有以下优点:

编译通常是"即时",这意味着不再需要切换到命令行进行编译

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

IDE通常对您正在使用的语言有更多的语义知识,并且可以在键入时向您显示可能的问题.重构比"搜索替换"更强大.

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



8> Vinko Vrsalo..:

IDE基本上是:

编辑带代码完成,重构和文档

调试器

文件系统资源管理器

SCMS客户端

构建工具

所有在一个包中.

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

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



9> Matthew Farw..:

日食:

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

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

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

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

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

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

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

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



10> Eigir..:

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

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

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

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


配置Emacs / Vim只是将适当的文件复制到程序可以找到它们的地方。如果将配置文件很好地组织在一个目录中,实际上并没有那么困难,之后您可以将其保存在闪存驱动器,Internet存储或存储库中,以便在需要设置时可以“克隆”它们。改善您的工作环境。:)
它需要更长的时间才能启动,但之后它会更好地"量身定制".

11> Gerald..:

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

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

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



12> vikramjb..:

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

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

    提供更高的代码生产力

      语法突出显示

      参考集会

      智能感知

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

      调试功能

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



13> 小智..:

根据开发人员试图完成的任务,IDE 可以是一种"优越"选择.

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

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

我对那些谁喜欢的IDE或文本编辑器没有偏见,既可以是非常有成效的和有用的,如果学得很好!



14> dkretz..:

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

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

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

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

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



15> 小智..:

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

我找了重构和浏览,调试和搞清楚IDE更好的东西做的.然后在IDE中完成小的事情,我翻转的大件事情来完成这项工作.



16> 小智..:

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



17> Steve..:

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

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有