Что такое плагин профессионального рефакторинга JavaScript для Eclipse (или Intellij IDEA)? - PullRequest
4 голосов
/ 22 апреля 2011

Сегодня, когда я попытался сделать простое переименование рефактора в JavaScript, используя intellij IDEA 10, я был шокирован тем, что он сделал.Он переименовал этот атрибут класса везде, независимо от того, принадлежал ли этот класс классу или нет!Например, Baz.attr1 переименован в Baz.attribute1, он также переименован в Box.attr1 в Box.attribute1.Предварительный просмотр Refactor здесь не помогает, потому что существуют сотни мест, в которых одно и то же имя атрибута используется в различных ситуациях, таких как this.attr1 тип ссылок.

Eclipse даже не имеет рефакторинга переименования JavaScript.1009 * В дополнение к переименованию я ищу рефакторинг группы функций и переместить их в нотации Object Literal, такие как

function foo() {

}
function bar() {
}

рефакторинг:к этим вызовам функций во всех файлах, включая файлы HTML и JSP, такие как foo();, изменяющиеся на MyCompany.Baz.foo();

. Ни в одной из этих сред нет ничего подобного.JavaScript для Eclipse (предпочтительнее) или Intellij IDEA, который будет выполнять те виды рефакторинга, о которых я говорю?

1 Ответ

8 голосов
/ 22 апреля 2011

Я считаю, что необходимый вам рефакторинг переименования невозможен на динамическом языке.

Допустим, у вас есть классы Baz и Box с атрибутом attr1.

Если мы напишем что-то вроде:

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

Что должна делать программа рефакторинга?

Учитывая, что тип переменной известен только при выполнении соответствующего кода, и что этот тип может различаться при каждом вызове этого кода, компьютер не может определить, к какому определению вызов атрибута'attr1' должен быть связан с.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...