我为什么要使用IDE?
在另一个问题上, 马克高度评价IDE,说:“有些人还不知道”为什么“他们应该使用一个…”。 作为使用vim进行编程的人,在我的大多数同事使用vim或emacs进行所有工作的环境中工作,IDE的优点是什么? 我为什么要用一个?
我相信这对某些人来说是一个负担的问题,而且我对开始一场激烈的战争并不感兴趣,所以请只回答你认为基于IDE的方法优越的原因 。 我不知道为什么我不应该使用IDE; 我已经不使用一个。 我有兴趣听到“围墙的另一边”,可以这么说。
如果您认为IDE可能适用于某些types的工作,但不适用于其他types的工作,则我也有兴趣了解原因。
这真的取决于你使用的是什么语言,但是在C#和Java中,我发现IDE对于:
- 快速导航到一个types,而不必担心命名空间,项目等
- 通过将其视为超链接来浏览成员
- 当你不记得所有成员的名字时,自动完成
- 自动代码生成
- 重构(大规模)
- 组织导入(使用C#中的指令自动添加适当的Java导入)
- 警告 – 即时types(即一些错误甚至不需要编译周期)
- 徘徊在某些东西看文档
- 以有用的方式在屏幕上同时显示文件,错误/警告/控制台/unit testing等等和源代码
- 轻松从同一窗口运行unit testing
- 集成debugging
- 集成的源代码pipe理
- 从错误详细信息直接导航到发生编译时错误或运行时exception的位置。
- 等等!
所有这些都可以节省时间。 他们是我可以手动做的事情,但更痛苦:我宁愿编码。
代码完成。 它探索代码很有帮助。
关于为什么我使用IDE的简短答案是懒惰。
我是一个懒惰的人,当有一个简单的方法来做时,他不喜欢做一件困难的事情。 IDE使生活变得简单,所以吸引我们懒惰的民间。
当我input代码时,IDE会自动检查代码的有效性,我可以突出显示一个方法,然后点击F1获得帮助,右键单击并select“去定义”直接跳到定义的位置。 我打了一个button,应用程序,debugging器自动附加为我启动。 所以名单继续。 所有开发者每天都在做的事情都集中在一个屋檐下。
没有必要使用IDE。 这不是很难。
当“文本编辑器”实际上是emacs时,我认为做经典的“文本编辑器和控制台窗口与IDE”是不公平的。 IDE的典型function大部分都是在emacs中。 也许他们甚至起源于那里,现代IDE主要是界面改进/简化。
这意味着对于原来的问题,答案并不是那么明确。 这要看网站上的用户如何使用emacs,如果他们主要使用emacs作为文本编辑器,或者他们全力以赴使用自定义脚本,学习相关模式的命令,了解代码标记等等。
我从相反的方向来回答这个问题。 我在Makefile + Emacs land的编程中被带入了很less的入口。 从DOS下最早的编译器Microsoft Quick C开始,我有一个IDE来自动化事情。 我花了很多年的时间在Visual C ++ 6.0中工作,当我gradle进入Enterprise Java时,我和Borland JBuilder一起工作,然后在Eclipse上工作,这对我来说非常有效。
在我最初的自学,大学和现在的职业生涯中,我发现任何在IDE中完成的主要软件开发都会适得其反。 我这样说是因为大多数IDE都希望你能够以独特的I-Control-how-the-world-works风格工作。 你必须沿着他们的路线切割和切割你的项目。 你已经使用奇怪的对话框pipe理你的项目构build。 大多数IDE的pipe理复杂性很差地build立项目之间的依赖关系,并且依赖性可能难以100%地工作。 我一直在IDE的情况下,不会产生我的代码的工作版本,除非我做了一个清洁/重build全部。 最后,很less有一种干净的方法可以将您的软件从开发中移动到其他环境,如IDE中的QA或Production。 让所有的部署单元build立起来通常是一个单击的事情,或者你有一些IDE供应商给你提供的一些尴尬的工具来捆绑一些东西。 但是,这个工具通常要求你的项目和构build结构完全符合他们的规则 – 有时候这对你的项目的要求是不行的。
我已经了解到,为了与一个团队进行大规模开发,如果我们使用IDE开发代码,并使用手动编写的命令行脚本完成所有构build,我们可以是最有成效的。 (我们喜欢用于Java开发的Apache Ant)。我们发现,将脚本运行到IDE之外对于复杂的构build来说只是一个点击或自动化的噩梦,它更容易(并且更less干扰)将tab切换到shell并在那里运行脚本。
手动构build需要我们错过现代IDE中的某些细节,比如后台编译,但是我们所获得的更重要的是:可以在多个环境中生活的干净而简单的构build。 所有那些敏捷的人谈论的“一键构build”? 我们有它。 我们的构build脚本也可以通过持续集成系统直接调用。 构build通过持续集成进行pipe理可以让我们更正式地将您的代码部署移植到不同的环境中,并且在有人检查破坏构build或unit testing的错误代码时,几乎可以立即让我们知道。
事实上,我从IDE的angular度来看,并没有对我们造成太大的伤害。 Eclipse中的intellisense和重构工具仍然是完全有用和有效的 – 后台编译仅仅是为了支持这些工具。 而且,Eclipse对项目的特殊切割已经成为一种非常好的方式,以每个人都能理解的方式(我的口味仍然有点冗长)在心理上打破了我们的问题集。 我认为关于Eclipse的最重要的事情之一就是优秀的SCM集成,这就是团队开发如此愉快的原因。 我们使用Subversion + Eclipse,这非常高效,而且非常容易培训我们的人员成为专家。
作为你在这个问题上突出反应的作者,不可否认的是,在这个问题上迟了一点,我不得不说,在已经列出的许多理由中,专业开发人员的生产力是最重要的高度重视的技能。
就生产力而言,我的意思是能够以最佳的结果高效地完成工作。 IDE可以在很多层面上实现这一点。 我不是Emacs专家,但我怀疑它缺less主要IDE的任何function。
devise,文档编制,跟踪,开发,构build,分析,部署和维护是企业应用程序中的关键脚步,都可以在IDE中完成。
如果你有select,为什么你不会使用如此强大的东西?
作为一个实验,你可以投入30天的时间来使用IDE,看看你的感受如何。 我很乐意阅读你的经验。
有一个IDE有以下优点:
- 编译通常是“即时”,这意味着没有更多的切换到命令行编译
- debugging是集成的,并且在IDE中意味着步debugging器实际上使用您的就地编辑器来直观地显示您执行的代码
- IDE通常对您正在使用的语言有更多的语义知识,并可以在input时显示可能出现的问题。 重构比“searchreplace”function强大得多。
还有更多,也许你应该试试看。
IDE基本上是:
- 编辑w /代码完成,重构和文档
- debugging器
- 文件系统浏览器
- SCMS客户端
- 构build工具
都在一个单一的包。
你可以使用单独的工具或者只是一个优秀的可编程编辑器和额外的工具,比如Emacs(Vim,但是具有less一点IDE的IMO),来拥有所有这些(还有更多)。
如果你发现自己在一个实用工具和下一个可以集成到环境中的实用工具之间进行切换,或者如果你缺less这里列出的某些function(更完整地在其他文章中),也许是时候转移到IDE(或通过添加macros或者不增加macros来改善你的环境的IDEable)。 如果您使用多个程序构build了自己的“IDE”(在上面提到的意义上),那么就没有必要移到实际的IDE中。
蚀:
有代码higlighting,在后台编译,指出我的错误,因为我去。
与javadoc集成,用ctrl-Space提示variables名称。
当我编译时,我在那里得到错误。 我可以双击一个错误,并显示相应的行。
真的很好地集成了JUnit,ctrl-F11运行testing,告诉我testing失败了。 如果在输出窗口中有exception,我可以双击一行,并把我带到失败的那一行。 不仅如此,而且ctrl-F11可以确保在运行testing之前编译所有东西(这意味着我永远不会忘记这么做)。
与ant融合。 一个命令来构build和部署应用程序。
与debugging器集成,包括Web服务器的远程debugging。
奇妙的重构工具,search引用一段代码。 帮助我了解变化的影响。
总之,这使我更有成效。
这肯定会导致我的生产力提高。 甚至在Vista上编写Visual Studio中的Linux应用程序,然后使用Linux虚拟机构build它们。
您不必记忆函数或方法调用的所有参数,一旦开始input参数,IDE将显示需要哪些参数。 您可以使用向导来设置项目属性,编译器选项等。您可以在整个项目中search,而不仅仅是当前文档或文件夹中的文件。 如果您遇到编译器错误,请双击它,并将其转移到违规行。
所有这些东西都可以单独使用,但是在同一个开发环境中,所有这些都可以节省大量的工作量并保持开发过程的高效率。
我已经使用Emacs作为开发和邮件/新闻大约10年(1994-2004)的主要环境。 当我在2004年强迫自己学习Java时,发现了IDE的强大function,令我吃惊的是我真的很喜欢IDE( IntelliJ IDEA )。
因为这里已经提到了很多,所以我不会去具体的原因 – 只要记住不同的人喜欢不同的特征。 我和一位同事使用了相同的IDE,我们都只使用了一小部分function,而且我们不喜欢使用IDE的其他方式(但是我们都喜欢IDE本身)。
但是IDE对于我想要关注的Emacs / Vim相关环境有一个优势:您可以花更less的时间来安装/configuration所需的function。
使用Wing IDE (适用于Python)我准备在安装后15-20分钟开始开发。 不知道需要多less小时才能获得我用Emacs / Vim运行的function。 🙂
不同的人可能有不同的理由。 对我来说这些是优点。
- 为项目提供整体感觉。 例如,我将在单个视图中具有所有相关的项目文件。
- 提供更高的代码生产力
- 语法高亮
- 组件的引用
- 智能感知
- 数据库和相关UI文件的集中视图。
- debuggingfunction
一天结束,它可以帮助我比记事本或写字板更快地进行编码。 这对我来说更喜欢IDE是一个很好的理由。
一个IDE 可以是一个“优越”的select,取决于开发人员试图完成什么。
文本编辑器可以是“优越的”,因为IDE通常面向一种(或less量select)的语言。
如果一个开发人员将大部分时间花在一个单一的语言或相关语言(如C#和T-SQL)的“集群”上,那么在一个操作系统中,然后是GUIdevise,debugging,智能感知,重构等工具一个好的IDE可以是非常有说服力的。 例如,如果你花费大部分时间在VB.NET中工作,或许在Windows环境下使用一些T-SQL,那么你不会看Visual Studio或者类似的IDE 。
对于那些喜欢使用IDE或文本编辑器的人来说,我没有任何偏见,如果学得好的话,两者都可以是非常有效率和有用的!
我认为这主要与开发者的意识范围有关。 IDE提供了开发人员工作环境的macros观视图。 您可以同时看到类的层次结构,引用的资源,数据库模式,SDK帮助引用等。由于影响您的按键,以及不断扩大的体系结构和体系结构的交叉点,所以受到越来越多的困难一次只能从一个代码岛工作。
OTOH,“只有我,vim和man page”,让我对自己的工作有了更加细致的微观 – 但却是激烈而精确的看法。 这是好的,如果我有一个devise良好的,分区良好的,稀疏耦合的高度一致的代码库,使用一种静态库来工作,而不是典型的情况,特别是随着开发团队规模的增长和重塑代码结构随着时间的推移,距离和个人喜好。
我目前正在使用Flex和.NET进行项目。 关于Flex的更好的事情之一是完成一个标准的东西有多less种不同的方式 – 从数据库中拉取数据,打开/closures/读取/写入文件等等(然而,我正在使用Flex Builder / Eclipse IDE – 像VS这样的典型的重量级的例子,因为我还在学习基础知识,而且我需要训练轮子,一旦我对自己的模式充满信心,我希望能够回到vim。)在这个观点中,我可以做什么我需要专业地了解一些事情真的很好。
OTOH,我无法想象用.NET来达到这个目的,因为我期望维护的观点不断扩大和变化。 在几个月的时间里,一个项目上的几个开发人员的概念完整性就less得多,而且一致性更低 – 但是IDE支持这一点,也许会鼓励它。 所以开发人员确实需要(而且可以更容易)充分地了解更多的事情。 这也有利于帮助他们回答(甚至理解)StackOverflow上更多的问题。 也就是说,我们可以有更深入的知识堆栈。 而且我们可以回应更多的求助广告。
双方都可能走得太远。 也许在“仅限编辑”的范围内,就像“如果你只有一把锤子,一切看起来像钉子”。 使用IDE方法,无论您想要紧固在一起,您都有各种各样的紧固件和相关的工具可供select,包括螺丝/锤子,螺丝/螺丝刀,螺栓/扳手,粘合剂/胶枪/夹子,磁铁等等 – 全部在你的指尖(用一个向导来帮助你开始)。
不要认为它是独占的。 使用IDE提供的好处,当你需要一些认真的焦点时,切换到vim /首选文本编辑器。
我发现IDE更适合重构,浏览和debugging,以及弄清楚要做什么。 然后,在IDE中做小事情,我转向vim完成这件工作。
除了其他答案之外,我喜欢将IDE的开发能力与Vim的编辑能力结合起来,像Eclipse的ViPlugin一样。
智能感知 ,集成debugging器和即时窗口让我极大地提高了工作效率( Visual Studio 2008 )。 随着一切都在我的指尖,我可以在编写代码时将绝大多数的巨大项目保留在我的头脑中。 微软可能会继续在他们的操作系统上放下手,但Visual Studio是有史以来最好的产品之一。
对我来说,一个IDE更好,因为它允许代码中的更快的导航,如果你有想要实现的东西,这是非常重要的。 假设你不使用IDE,到达目的地需要更长的时间。 你的想法可能会更经常地被中断。 这意味着更多的点击/更多的键必须按下。 人们不得不更多地关注如何实施的想法。 当然,你也可以写下一些东西,但是必须在devise和实现之间跳跃。 而且,GUIdevise师也有很大的不同。 如果你手工操作,可能需要更长的时间。
我不明白你在问什么 你问“我应该用IDE而不是…”,但是我不明白什么是替代scheme – Vim和Emacs可以完成许多IDE给你的function。 他们不处理更大的IDE的唯一方面可能就是UIdevise师。 那么你的问题就归结为简单的“我应该使用什么IDE”,并为Vim和Emacs这个更简单的领域提出争论。
节省时间来发展
通过提供集成debugging,智能感知等function,使生活更轻松。
有很多,但会推荐使用一个,他们是比较明显的。
我不确定文本编辑器和IDE之间是否有明确的分界线。 你有一个规模的一端的记事本,另一个是最好的现代IDE,但之间有很多东西。 大多数文本编辑器都有语法高亮显示; 面向程序员的编辑器通常具有各种其他function,例如简单的代码导航和自动完成。 Emacs甚至可以让你集成一个debugging器。 即使十年前的IDE,对程序员的帮助也远不如现在这些严肃的文本编辑所期待的。
我使用的主要原因是代码超过100个文件。
尽pipectags可以完成这项工作,但是一些IDE有一个非常好的方法来以极快的速度轻松导航文件。
当你有很多工作要做时,这样可以节省时间。
基于GUI的IDE如Visual Studio和Eclipse相对于Emacs或vim等基于文本的IDE具有几个优势,因为它们具有显示function:
- 所见即所得的GUIdevise预览和实时编辑
- 高效的财产编辑器(如使用GUI调色板的颜色select,包括定位渐变停止等)
- 代码轮廓的graphics描述,文件的相互关系等
- 更有效地利用屏幕空间来显示断点,书签,错误等
- 更好地拖放操作系统和其他应用程序的支持
- 集成编辑图纸,图像,3D模型等
- 显示和编辑数据库模型
基本上使用基于GUI的IDE,您可以一次在屏幕上获得更多有用的信息,您可以像查看文本部分一样轻松地查看/编辑应用程序的graphics部分。
作为一名开发人员,最酷的事情之一就是编辑一种方法,计算一些数据,并在另一个窗口中以graphics方式显示代码的实时输出,就像用户在运行应用程序时看到的一样。 这就是所见即所得编辑!
像Emacs和vim这样基于文本的IDE可以随着时间的推移添加代码完成和重构等function,所以从长远来看,它们的主要限制是基于文本的显示模型。
对我来说,这只是我们在terminal的美好时光所做的一切的GUI版本。 我会一直认为IDE并不是很优秀,因为它隐藏了很多东西,特别是关于链接的东西,但是在某些情况下它们有显着的优势,例如像Qt这样的特定的开发平台。
一些像其他人一样的IDE,甚至似乎在你键入的时候parsing你的代码,甚至在你编译之前检测错误:似乎只有一个IDE可以和编译器紧密合作来立即检测types源代码中的问题。
我的答案是,IDE /命令行火焰战争存在,只是因为C / C + +可执行的build设不是从一个标准化的angular度来处理,不像D语言; 每个平台都以自己的方式处理编译/链接/等,所以为了使它不那么混乱,他们做了一个IDE。
从你的angular度来看,使用命令行可能会更简单,如果只有一个带有标准选项的编译器,那将是容易的,但事实是C / C ++是灵活的,所以最终所有平台以自己的方式做,因此IDE不浪费解释如何做到这一点。
如果你可以学习一个可执行程序如何与内核进行交stream,或者你知道关于编译器devise的任何知识,也许有一种方法可以使用适当的命令行,但是我怀疑你有没有办法。
微软或者苹果,他们将会是所有的恶魔,都不得不提出一个直接的方式来构build应用程序而不需要细节,而且由于构build应用程序直接取决于操作系统的体系结构,因此它将很难成为“标准”命令行是。
简单地说,大而复杂的应用程序,你不想深入到它所做的事情 – > IDE,一小段软件或简单的系统软件devise – >命令行。 除了那些embedded了Makefile的漂亮的库,当然是另一回事了。
另外,我认为IDE是在应用程序交付的时候使用的,具有讽刺意味的是,GUI或者具有接口或者直接绑定到操作系统的东西,所以也适用于那些不知道如何使用UI / GUI的人它是如何工作的,而编程系统的人则不需要这一切。
IDE是现代的狗屎,但我认为在100年内命令行依然存在。
我也几乎完全使用Vim(几乎是因为我正在尝试学习emacs)。 我认为纯粹直观(当然,从graphics用户界面)是人们喜欢使用IDE的主要原因。 通过直观,对于该工具的学习开销几乎不需要。 学习开销越小,他们就可以完成更多的工作。
一个IDE允许一个工作更快,更容易…我注意到我花了很多时间在一个简单的文本编辑器中的代码导航…
在一个好的IDE中,如果IDE支持跳转到function,到之前的编辑位置,到variables,那么这个时间就会缩短…另外,一个好的IDE可以缩短实验不同语言特性和项目的时间,因为启动时间可以小。
我喜欢IDE,因为它可以在我的指尖放置很多function。 编辑/编辑/项目中的文件的可见性都是我在IDE中看重的东西。 我现在使用Visual Studio,但在以前的生活中,我使用SlickEdit,发现它使我的开发过程比不使用时更精简。
在决定是否使用IDE时,只有一件事需要考虑,那就是它是否使您的工作效率更高。
短题如此简短的回答:)
简而言之,IDE通过简单的编辑器提供了更多的省时function。
这很大程度上取决于你在做什么以及你在做什么语言。我个人倾向于不使用IDE(或者“我的IDE包含3个运行vim的xterm,一个运行数据库客户端,另一个运行一个bash提示或拖尾日志“,这取决于你对我的大部分工作有多宽泛的定义),但是如果我发现自己正在开发一个平台本地的GUI,那么我就会select一个适合于语言的IDE即时 – 国际海事组织,IDE和graphics表格编辑是明确为对方。