什么是适用于Eclipse(或Intellij IDEA)的专业质量JavaScript重构插件?

4
今天我在使用Intellij IDEA 10进行JavaScript的简单重命名重构时,我惊讶地发现它所做的事情。它无论属性是否属于该类,都会在任何地方重命名该类属性!例如,Baz.attr1被重命名为Baz.attribute1,同时还将Box.attr1重命名为Box.attribute1。重构预览在这里没有帮助,因为有数百个不同情况下使用相同属性名称的地方,例如this.attr1类型的引用。

Eclipse甚至没有JavaScript重命名重构功能。

除了重命名,我还希望重构一组函数并将它们移动到对象字面量表示法中,例如

function foo() {

}
function bar() {
}

重构为:

var MyCompany.Baz = {
 foo: function() {
  },
 bar: function() {
 }

}

应该重构所有文件中对那些函数调用的引用,包括HTML和JSP文件,例如 foo(); 改为 MyCompany.Baz.foo();

任何IDE都没有这样的功能。

是否有JavaScript高质量的插件可用于Eclipse(首选)或Intellij IDEA,可以进行我所讲述的重构操作?

1个回答

8

我相信你想要的重命名重构在动态语言中是不可能的。

假设你有类BazBox,它们都有attr1属性。

如果我们写下如下代码:

var b;
if (someCondition) {
    b = createBox();
} else {
    b = createBaz();
}
b.attr1 = "value";

重构程序应该做什么?

考虑到变量的类型只有在执行相应的代码时才知道,而且这种类型可能在每次调用该代码时都不同,计算机无法确定属性“attr1”的调用应链接到哪个定义。


这很有道理,在这种情况下,我希望智能重构程序能够指出这些行,而不是盲目地将b.attr1 =“value”更改为b.attribute1 =“value”。但如果是像a = new Baz();和b = new Box();这样的情况,它应该是自动的,那么它就不应该将b.attri更改为b.attribute1。 - ace
你是否投入了单元测试?你说得没错,预览/重构应该警告有问题的情况,但如果你需要一个自动化工具来维护代码,那么你也需要一个自动化工具来确保它全部正常运行 :) 此外,单元测试通常非常棒。 - Indolering

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接