动态语言中是否可以自动重构?

Dan*_*ark 10 refactoring dynamic-languages

也许我受限于我在动态语言方面的经验(Ruby on Netbeans和Groovy on Eclipse),但在我看来,动态语言的本质使它无法重构(重命名方法,类,推升,下拉,等)自动.

是否可以使用任何动态语言(使用任何IDE /工具)重构AUTOMATICALLY?我对Ruby,Python和Groovy特别感兴趣,以及重构与所有Java IDE中可用的100%自动重构相比如何.

Fra*_*rar 16

由于自动重构是发明了动态语言(Smalltalk的),我会说"是".

特别是,John Brant,Don Roberts和Ralph Johnson开发了重构浏览器,它是Squeak的核心工具之一.

今天我的Google-fu很弱,但你可以试试这篇论文:Don Roberts,John Brant和Ralph Johnson,Smalltalk的重构工具,"对象系统的理论与实践",(3)4,1997.

  • 对不起,我不是故意只给出历史记录.我的意思是建议重构浏览器是许多Smalltalk IDE中的标准工具 (2认同)

小智 13

Smalltalk没有声明任何类型.自1995年以来,重构浏览器已经成功地在商业代码中执行了正确的重构,并且几乎包含在所有当前的Smalltalk IDE中. - 唐·罗伯茨

  • 谢谢Don,现在我只需要在Smalltalk工作.如何在不声明类型的情况下进行重构(请原谅我的无知)? (3认同)

小智 9

自动重构是在Smalltalk中发明的,这是一种高度动态的语言.从那时起它就像一个魅力.

您可以尝试使用免费的Smalltalk版本(例如http://pharo-project.org)

在动态语言中,您还可以自己编写脚本重构或查询系统.获取测试类数量的简单示例:

TestCase allSubclasses大小