2016-05-01 3 views
1

Я хотел бы реорганизовать переменную внутри функции, но только внутри этой функции. Возможно ли это в среде JetBrains?Рефакторинг внутри области в JetBrains IDE

Пример:

var global = 0; 

function func1 (val) { 
    if (val === global) { 
     doSomething(); 
    } else if (val * 2 === global) { 
     doSomethingElse(); 
    } else { 
     doSomethingElseEntirely(); 
    } 
} 

function func2 (val) { 
    if (val === global) { 
     doSomething(); 
    } else if (val * 2 === global) { 
     doSomethingElse(); 
    } else { 
     doSomethingElseEntirely(); 
    } 
} 

При попытке изменить переменную global внутри func1 через рефакторинг, он будет изменен во всех объеме глобалов, так что в func2, а также. Я хотел бы предотвратить это. Это возможно?

+1

Вы пытаетесь ** рефакторинг ** глобальная переменная .. так нет - ваш сценарий невозможен. Ваши варианты: многозадачное редактирование или простой поиск/замена в выборе. – LazyOne

ответ

0

Насколько я знаю, «текущий файл» является наименьшей возможной областью.

Обход:

для того чтобы достигнуть того, что вы хотите с наименьшими усилиями, я предлагаю использовать обычный поиск.

  1. Поиск «глобальный» (Strg + F)
  2. место курсор до или выше первого вхождения «глобальный» в вашей функции (чтобы получить правильную начальную точку и удалить фокус с поля поиска)
  3. нажмите «Добавить выделение для Следующее вхождение» (или Alt + J), как часто по мере необходимости
  4. переименовании всех вхождений сразу, введя новое имя

некоторые ручной работы нужны здесь, но я думаю сво быстрый способ для больших функций.

1

Вот более простой способ обхода проблемы.

webstorm refactoring

  1. Добавить фиктивный var global в func1.
  2. Используйте Refactor> Переименовать инструмент (Сдвиг + F6), при выборе любого вхождения global в func1.
  3. Удалить строку (поместить курсор в строке и нажмите Ctrl + Y) добавляют на стадии 1.
Смежные вопросы