2011-04-22 64 views
4

今天当我尝试使用intellij IDEA 10在JavaScript中进行简单的重命名重构时,我很震惊它做了什么。无论属性是否属于该类,它都会将该类属性重命名为无处不在!例如Baz.attr1更名为Baz.attribute1,它也更名为Box.attr1Box.attribute1。重构预览在这里没有帮助,因为有数百个地方在不同情况下使用相同的属性名称,例如this.attr1引用类型。什么是Eclipse的专业品质JavaScript重构插件(或Intellij IDEA)?

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

,另外再重命名我期待重构一组功能并将其移动到对象文字符号,如

function foo() { 

} 
function bar() { 
} 

重构为:

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

} 

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

没有su在任何IDE中都可以使用。

是否有高质量的插件可用于Eclipse的Eclipse(喜欢)或Intellij IDEA,可以做我正在谈论的各种重构?

回答

8

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

假设您的课程BazBox具有attr1属性。

如果我们写的东西,如:

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

应该怎样重构计划吗?

由于变量的类型只有在执行相应代码时才知道,并且此类型在每次调用该代码时可能会有所不同,因此计算机无法确定属性'attr1 '应该被链接到。

+0

这是有道理的,在这种情况下,我希望智能重构程序能够指向这些行而不是盲目地更改b.attr1 =“value”;到b.attribute1 =“value”;.但它应该是自动的,就像a = new Baz();和b = new Box();那么它不应该将b.attri更改为b.attribute1。 – ace 2011-04-22 13:50:13

+0

您是否投资过单元测试?你是正确的,预览/重构应该警告阴暗的情况,但是如果你需要一个自动化的工具来维护代码,那么你还需要一个自动化的工具来确保它们都能正常工作:)这和单元测试通常很棒。 – Indolering 2012-05-22 00:06:38

相关问题