现代的IDE有很多技巧可以帮助编写代码,重构和搜索。所有这些都非常有帮助,但是几乎没有一个看起来像真正的“魔术师”,让我觉得“哇!它是如何解决的?”
您能否命名任何令人印象深刻的IDE代码自动化(或其他)功能,这些功能在您第一次看到它们时就大为震惊?
现代的IDE有很多技巧可以帮助编写代码,重构和搜索。所有这些都非常有帮助,但是几乎没有一个看起来像真正的“魔术师”,让我觉得“哇!它是如何解决的?”
您能否命名任何令人印象深刻的IDE代码自动化(或其他)功能,这些功能在您第一次看到它们时就大为震惊?
Answers:
foreach(var matche in regex.Matches(str))
。也设置matche
为object
而不是Match
,不是很有用。
MatchCollection
是一个无类型的集合。对于正确的收藏,var
效果很好。(虽然我还是不喜欢它)
代码气泡。http://www.andrewbragdon.com/codebubbles_site.asp
我喜欢Visual Studio和Eclipse,因为它们为我提供了更改代码的工具,但是Code Bubbles确实使我能够导航和查看我的代码而感到兴奋。太糟糕了,它不是公开可用的=-{
我听说过的最令人印象深刻的编程环境是Genera操作系统。
您可以单击窗口系统中的任何小部件,并获得该项目的源代码和文档的完整读取。作为一种动态编程语言(Lisp),您可以即时编辑小部件的源代码。
Lisp Machine领域的ZMACS仍然被认为比Emacs更好,它是一个没有同行的编辑器环境。
直观地显示程序的结构(程序/功能/例程/ ...)
ReSharper的重构能力。完全公开而言,由于我认为带有Eclipse的Java已有这种功能已有一段时间了,所以我可能会走在后面,但是我经常不使用Java。
ReSharper添加到Visual Studio的功能差是如此之大,令人难以置信。我知道我听起来像是一则广告,但我认为我永远都不会回到没有ReSharper的情况下使用Visual Studio的常规安装。
更普遍的是,对代码的语义理解会在任何一天取代普通的旧文本编辑器。这导致诸如“查找变量的用法”或“内联函数”或“使用惯用模式的机会”之类的东西。
Smalltalk的调试器:
在Smalltalk中,花费大部分时间从调试器中编写代码是很正常的。
(我记得在使用Visual Age for Java的那一天,由于运行方法,看到错误,对其进行更改,然后再次运行该方法而没有重新启动应用程序而感到震惊,因为VA4J是用Visual Age for Smalltalk编写的。)
Smalltalk的方法查找器
使用“方法查找器”,您可以询问“我可以发送哪些消息以获取这些参数并获得此结果?” 问它'abc'. 'def'. 'abcdeb'.
,它告诉你'abc' , 'def' --> 'abcdef'
。问它#(0 1 2 3)
,它说#(0 1 2 3) sum --> 6
。*所有的发件人,实施者–查找消息的所有(*)发件人或实现该消息的所有对象。
(*)除非您在运行时执行诸如创建消息名称之类的事情:self perform: (#foo, #bar)
向自己发送消息#foobar
-在这种情况下,您知道自己在做什么,并且您不介意将自己悬挂在自己的野鸭上的潜力。
当我看到Java时,Whyline确实给我留下了深刻的印象。它是一个动态分析工具,可让您询问有关程序输出的问题,不仅是文本,还包括图形。例如,您可以问“为什么那条线是红色的?” 或“为什么未调用paint方法?”
它通过检测程序并记录运行来工作。例如,假设有一个可以重现的错误。您可以使用Whyline检测程序,在Whyline中运行该程序以重现该错误,然后在退出该程序时,可以使用Whyline检查执行历史记录。
录制和播放并不是什么新鲜事物,但是Whyline的实现方式非常漂亮。您可以根据特定事件查看历史记录(例如,仅关注鼠标拖动事件或仅按下键盘事件)。它还将输出与程序的输出部分相关联,因此您可以从输出导航到代码。
为了工作,它使用程序切片,因此您可以专注于代码中实际上相关的部分。CMU现在拥有一项专利,我不知道他们的计划是什么,但是我希望我们可以在生产中看到更多。这是一个内存消耗,但这很可能是因为它是原型并且可以改进。
您应该在线观看该演示,但也应该自己尝试一下以获取完整的体验。如果有的话,在线演示不胜枚举。
我认为我见过的最令人印象深刻的IDE功能是SyncEdit,AFAIK仅在Delphi中可用。
我希望在IDE中看到以下功能:
sheet[A3]
)和代码中的图形,并像访问任何变量一样访问它们。if
以表格形式显示复杂条件(仍在搜索链接)。动态语言的类型检查
只要您的代码不会太“元”,那么用于Ruby或Python的IDE应该可以运行一个后台任务,该任务可以:
我还没有看到执行此操作的IDE。
Pex做一些非常酷的自动化单元测试生成。它跟踪您的代码,确定分支点,使用条件求解器生成击中每个可能分支的输入,然后让您将结果导出为可重复的单元测试。它可以羞辱复杂的字符串处理代码。