是什么证明了使用IDE与标准编辑器的合理性?[关闭]


39

我发现自己使用自己选择的文本编辑器(vim,nano,gedit,选择毒药)的频率比最近的任何IDE都要高。

在注意到我的ide快捷方式变得尘土飞扬之后,我开始思考并想知道:是什么使您可以使用IDE而不是文本编辑器

因此,您使用IDE而仅依靠编辑器有什么理由?


可能是程序员的副本。stackexchange.com/ questions / 1003 /…
拉里·科尔曼

您实际上在编辑器中什么?

编写代码,开发应用程序,...近来几乎所有内容。
克里斯,2010年

15
就个人而言,我发现在阅读别人的代码(尤其是大型项目)时,IDE 比编写自己的代码时有用得多。使用IDE,您可以更轻松地浏览源代码,从而更轻松快速地了解其他人的源代码。
查尔斯·萨尔维亚

3
我想解决这个问题。不使用IDE的理由。
Nailer 2010年

Answers:


69

I:整合。一个好的文本编辑器可能很适合编写代码,但是您的大部分编程都不是花在编写代码上。它用于测试和调试,为此,您希望文本编辑器与编译器和调试器集成在一起。这是IDE的最大优势。


如果我能找到一个不会妨碍我的人:)
蒂姆·波斯特

5
我只是接受低于标准的编辑作为我为方便集成而付出的代价。
TMN 2010年

如果操作正确,是不是在测试程序?如果您花费大部分时间进行调试和猴子测试,那么我想我就会明白问题出在哪里。
汤姆·哈特芬

8
@Tom,当您可以一直进行自动化测试时,正在编写测试否则,请通过任何方法进行验证以产生最高质量。
Andres Jaan Tack

49

这些是我最喜欢的IDE IntelliJ的我最喜欢的功能,我喜欢将其用于Java,PHP,Javascript,HTML甚至ActionScript。

  • 错误检查 -类似于实时拼写检查代码。绝对必要。
  • 代码导航 - Ctrl+click在函数,变量上,键入以转到定义。(IntelliJ 在以上所有语言中都非常擅长此操作)
  • 代码完成 -我Ctrl+space经常使用它来帮助填写所需的类或方法名称。这加速了编码,甚至帮助捕获错误发生之前,当你需要的东西是不是从你在的IntelliJ甚至会帮助您拓展首字母缩写词的上下文访问-型NPE,打击Ctrl+space,它会显示“NullPointerException异常”, “ NoPageError”等。点击Alt+enter以自动添加import确实很棒。
  • 代码生成 -生成getter和setter,单击两次即可在界面中实现方法。
  • 很好的代码着色 -IntelliJ不仅对标准关键字,字符串,变量名进行着色,而且还对成员变量,局部变量,参数进行着色。在ActionScript中,实际上是一个setter / getter的变量将像函数一样被着色。
  • 重构 -最大的错误重命名。IntelliJ非常擅长重命名setter和getter或字符串用法。当然,您可以在需要时进行基于正则表达式的搜索和替换,还可以使用“保留大小写”选项来将“ myNumber”,“ MyNumber”和“ MYNUMBER”替换为“ myString”,“ MyString”和“ MYSTRING”一次操作
  • 版本控制集成 -我们使用SVN,并且我最喜欢的IDE VC功能能够创建,删除,移动类而无需考虑SVN,轻松浏览历史记录,非常好的diff工具,良好的合并能力以及注释文件(显示行-按行历史记录)。
  • 依赖项导入 -当依赖您具有来源的第三方库时,可以轻松导航到代码以进行参考,调试等。
  • 智能键入 -粘贴代码并将其自动粘贴到正确的选项卡位置,自动完成端括号,括号,引号等。
  • JUnit,FlexUnit和PHPUnit的很好的测试运行器
  • 调试 -当然。完美地调试JBoss,Jetty甚至Flash。按住Ctrl键并单击堆栈跟踪可直接转到代码。

诸如您可能认为理所当然的代码着色之类的事情,但良好的代码着色就像外围视觉一样,它使您可以专注于重要内容,而无需花费额外的时间来识别整个单词。

IntelliJ甚至还Ctrl+space用于建议变量名。在Java中,如果您声明一个新的EventMessageItem变量并点击Ctrl+space,它将建议“ eventMessageItem”,“ eventMessage”,“ item”等。

所有这些事情给我的方式有更多的时间去思考我的代码和架构,以及少想固定格式,处理文件系统,固定复制和粘贴错误,应用程序之间切换,追下来的文件,等等,等等我不知道您如何拒绝这种生产率的提高。


4
+ 1个提到IntelliJ Idea的想法-我就是喜欢它
artjom 2010年

3
+1,这里的大多数观点都适用于任何体面的IDE,或者应该:)
Matthieu 2010年

21

IDE比编辑器更了解您的代码。例如,这允许标识符完成和重构,对于像Java这样的冗长语言,这是天赐之物,


1
请注意,所有这些理解都需要存储内存。因此,与“适合软盘”编辑器相比,IDE往往会占用大量资源。

19
是的,但是我打字时我的8Gb i7开发人员机器需要做一些事情。:D
Dominique McDonnell

集成开发环境不是大量消耗资源。但是Smalltalk可能是一个极端的例子:反射的简单,非常简单的语法等等。
Frank Shearar 2010年

@Frank,取决于您希望他们做什么以及这有多容易。

18
[To the IDE] You had me at intellisense/autocomplete

1
+1即使总是感到不安,我也再也不用输入完整的类,方法或属性名了,并且确切地知道要选择正确的自动完成选项需要多少次击键... tic-tic-tic-TAB- dot-tic-tic-tic-TAB-dot-tic-tic-tic
grossvogel 2010年

5
@gross,但这是正确的!手动键入经常意味着键入错误。

@TThorbjørnRavnAndersen除非您有两个名字相似的东西,并且偶然输入的字符不足以获取正确的字符。我由于在自动补全中没有足够的注意而在一些需要“ NumberOfSegments”的区域中意外插入了“ NumberOfPoints”属性。话虽这么说,我宁愿拥有自动完成功能也要拥有自动完成功能。
KChaloux

14

生产率。还有其他合理的理由吗?对我来说,一个经过精心设计的IDE集中了我在编程时执行的许多功能-创建和编辑代码,使用源代码控制,调试,与项目管理工具进行交互,与其他程序员进行通信,创建文档,运行自动化测试-大大减少了过程摩擦,降低了我的生产率。

另外,即使我感觉好像我需要知道如何单独使用每个工具,我也不必这样做。至少对我来说,右键单击绝对比打开CLI和键入更可取。

我已经使用了很多,但是我要反复使用的IDE是Visual Studio,Wing IDE和NetBeans。所有这些都为我花费的编程时间增加了可观的价值。


9

从历史上看,IDE在单任务计算机上提供了无与伦比的便利性。我的第一个C编译器在edit-compile-run周期中需要执行以下步骤:

  • 开始编辑
  • 编辑程序
  • 保存程序,退出编辑器
  • 编译程序
  • 汇编编译程序
  • 链接编译和汇编程序
  • 运行程序

在我的CP / M系统上。(如果磁盘驱动器更大,我可以将其作为批处理程序自动执行。)

当我获得Turbo Pascal时,我很高兴能够在编译和调试时保持编辑器可用。

我相信,这就是使IDE最初流行的原因。


但是所有这些事情都可以由许多编辑人员完成。以Emacs为例。
JasonFruit 2011年

@JasonFruit:当然可以。我在解释什么首先吸引了我。在那些日子里,我在TRS-80 Mod 4上运行CP / M,我相信当时Emacs仍基于TECO。
David Thornley

好吧,要点 :-)(表情符号必须填写所需的字符数。)
JasonFruit 2011年

2
@ JasonFruit,CP / M-80计算机的最大RAM为64 Kb。考虑一下您可以容纳多少Emacs。

7

如果使用Lisp进行编码,则Emacs具有类似Intellisense的功能,例如查找方法参数和自动完成功能,因此可以说它是原始的IDE。能够将一个程序用于多个任务(通常进行编辑,shell /命令提示符,阅读新闻)也很不错。

通常,编辑器与IDE的问题似乎取决于编程语言。从我所见,例如,Ruby和Haskell编码器似乎更喜欢他们最喜欢的文本编辑器。


Emacs实际上可以用几乎所有语言来做到这一点。PHP模式相当不错,分别是Javascript,Haskell,Erlang和SQL的模式。(其他的也可能很好,但是我没有使用过它们)。
Zachary K

将所有这些花哨的内容添加到emacs(或与此相关的任何编辑器)后,您将拥有一个IDE。集成开发环境。我把它比作从面包店(IDE)买蛋糕与从头使它(装饰起来主编)
萨尔

+1,对于Coq,Haskell和Lisp Emacs来说是唯一得到任何体面支持的东西
jozefg 2013年

4
  • 一键式编译
  • 调试
  • 代码模板
  • 代码完成
  • 与版本控制和重构工具集成
  • 更简单的单元测试

仅举几例


3

我认为答案将在很大程度上取决于您所使用的编程语言以及您的语言水平。对于JAVA之类的语言,如果您做任何认真的事情,都必须有一个IDE。无论何时涉及脚本语言,例如JS或Ruby IDES,都没有太大用处。

我为开发使用了notepad ++和一组shell脚本(用于备份,git commits),它工作得很好。


我将GVIM用于Javascript,发现它比使用IDE快得多。它还使用更少的内存。添加大约3-4个shell脚本来实现jsLint,格式化和控制硒等功能,我发现我几乎不需要把手从键盘上移开。(老实说,如果我愿意的话,我可能会将所有这些脚本变成VIM插件)
Zachary K

3

一些赞成“编辑”的论点:

  1. 在某些情况下,IDE尚未开发或永远不会开发。
  2. 使用编辑器,您可以“更快”且更外科地进行更改。
  3. 它需要的资源要少得多(因此更容易同时使用许多开放资源)
  4. 因为这是解决诸如此处所述问题的唯一方法。
  5. (个人)有时候,当我不得不输入所有内容时,我会越来越有意识地投入工作,并且会更加专注于输入内容。例如,我多次发现方法(formaqString)中存在拼写错误,而使用IDE可能不会引起注意。
  6. 它使仅使用键盘(速度/流量)更容易工作
  7. 使用宏或其他节省时间的心态。

我每天都使用IDE来工作,否则很难编写Java / C#。

(2)与(3)相比:基本上,只有一个选项可以远程编辑文件(通过ssh /远程桌面),并且对远程服务器的配置或文件进行的更改最少。


2

当然,取决于您的语言,某些IDE还包括可视的Form / Window设计器。

尽管应该指出,但是程序员的文本编辑器和IDE之间的界线不是很明确。可以扩展许多编辑器来处理编译,代码完成,调试等。


2

我使用IDE进行测试/调试/集成,并使用KEDIT进行编辑,因为IDE严重缺乏编辑功能。
因为.NET IDE可以识别外部编辑,所以我要做的就是保存在编辑器中并接受提示以重新加载源代码。这使我可以同时优化编辑和调试功能。
对于其他IDE,我将KEDIT用作模板处理器和源搜索程序,并将该源复制/粘贴到IDE中。


在kedit中,IDE不能做什么?我真的很好奇,我在大多数严肃的编码中都没有真正使用过IDE,而是使用IDE ...
Dean Harding 2010年

像其他智能编辑器一样,KEDIT具有脚本功能,可让我执行IDE无法执行的操作。例如,我使用KEDIT进行多个缓冲区(每个kedit会话最多100个)的复制,粘贴和列编辑,这是IDE所无法企及的。
戴夫

1

对于IDE:-
开箱即用地连接了高级功能。
-一些功能非常适合您的框架,以至于编辑人员都没有等效功能。

对于编辑者:
-将手放在键盘上。
-您的开发环境在所有系统上都是相同的-
为您的编辑器
提供了更好的脚本- 外部工具或脚本提供了IDE的某些功能。(智能,转到定义,查找参考)



0

我真正推荐的唯一一个是调试器。IDE确实是一个编辑器,上面添加了许多其他gubbins,但是如果您可以通过在命令提示符下键入make(或向上箭头+ Enter)进行编译,则不需要 IDE。如果可以通过右键单击资源管理器并选择正确的菜单项来提交SCM,则不需要IDE。

现在我知道有些人需要诸如重构支持(第一次正确编写代码:))或一些集成的GUI设计器(但即使如此,使用Visual Studio时,我还是使用Expression来完成GUI工作,而不是VS中不受欢迎的XAML支持) ),并且许多人需要智能和自动完成功能(特别是对于Java和C#等冗长的名称冗长的语言)。

但是对我来说,GUI调试器是使用IDE的唯一真正好的理由。我仍然使用“命令行”调试器(恩,windbg),但是对于日常而言,它是VS的内置调试器。


0

IDE有很多好处。并非所有语言都具有全面的IDE来真正扩展规模,否则很难为所述语言创建一个语言。为什么需要IDE的原因?好吧,让我们从这些开始:

  • 该语言具有丰富的标准API,在IDE弹出窗口中可以帮助加快开发速度。
  • 有很多样板代码。(强制尝试/捕获,获取/设置等)
  • 自动完成功能可以准确满足您的编码需求
  • 您的语言单元测试套件已集成到上述IDE中。
  • IDE知道并支持有关最佳实践的多种语言通用库。
  • 可用插件来制作作品
  • 它不是很重,不会减慢您的系统速度
  • 高度集成的调试器?有帮助。

问题在于,并非所有语言都能真正从全面的IDE中获得很大的生产力提高。我将IDE用于某些工作(Java,C#),而不用于其他工作(Python,Ruby,Coldfusion)。这确实是一种平衡行为。某些语言只是不需要如此全面的套件。

每个都有IDE吗?当然。你总是需要一个吗?并不是的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.