在Vim中进行Ruby重构

fre*_*gas 9 ruby vim refactoring

我是Visual Studio中Resharper的忠实粉丝.它有一些很棒的重构工具,类似于Eclipse for Java中的工具.Ruby有这样的东西吗?更好的是,Vim中是否有一个插件或其他东西可以重构Ruby代码,比如重命名方法或变量的所有实例,在全站点重命名类等等?

spa*_*ovv 10

你可以查看Vim Ruby Refactoring.它有几个有用的重构模式.


Osc*_*Ryz 5

Ruby和其他动态类型化语言中的某些重构的问题是缺少重构类型的信息。

从Cedric Beust博客条目中:

几个月前,我向Ruby重构浏览器的作者提供了以下代码片段:

def f1(o)
    o.init
end

def f2(o)
    o.init
end

class C
   def init
      ...
   end
end
Run Code Online (Sandbox Code Playgroud)

然后我问他:“如果我将C.init重命名为C.init2,您怎么知道必须在f1和f2中重命名哪个o.init?”

他的回答是明确的:

“对于动态类型的语言,此问题很难解决。我认为计算机无法确定是否必须重命名这些语言。”

“因此,Ruby Refactoring Browser提供了两个功能,一个是重命名所有具有相同名称的方法,另一个是仅重命名明确属于该类的方法和调用。前者在f1和f2中重命名了o.init,而后者没有重命名。重命名它们。”

在这里阅读整个条目:动态语言,重构IDE。选一个。

话虽如此,Jetbrains拥有Ruby Mine IDE,它具有大量的重构功能。我不确定他们如何管理这种情况。

Ruby Mine重构http://img709.imageshack.us/img709/917/refactoringsonrubymine.png

我知道,VIM没有类似之处。