Eclipse - извлечение локальной переменной заменяет все вхождения только в области видимости - PullRequest
0 голосов
/ 02 сентября 2018

Я использую Eclipse Neon

У меня есть повторяющиеся вызовы метода в методе с завышенным размером:

 myObj.getStatus()

* 1006 Е.Г. *

if (myObj.getStatus() == ONE || myObj.getStatus() == TWO ) {
}
myObj.changeMe();
if (myObj.getStatus() == THREE || myObj.getStatus() == FOUR) {
}
myObj.changeMe2();
...

где статус может быть обновлен внутри между вызовами

У меня есть только 2 варианта

  • Извлечь локальную переменную и установить флажок Заменить все вхождения только в области (методе), что не годится (поскольку getStatus() не является окончательным)

  • Извлечение локальной переменной и замена вручную каждого соответствующего myObj.getStatus() вызова

Я наконец извлекаю метод, затем извлекаю локальную переменную и проверяю Заменить все вхождения

Это самый правильный вариант? или я могу заменить только в определенном контексте / выделенный текст в затмении? если нет, то можно ли это рассматривать как улучшение рефакторинга затмения?

EDIT

Я надеялся на рефакторинг к ближайшему включающему блоку, похожему на JavaScript let

На самом деле код не на том же уровне, но затмение заменяет все вхождения в методе

if (myState.equals(STATE_ONE){
  if (myObj.getStatus() == ONE || myObj.getStatus() == TWO ) {
  }
  myObj.changeMe();
}
if (myObj.getStatus() == THREE || myObj.getStatus() == FOUR) {
}
myObj.changeMe2();
...

1 Ответ

0 голосов
/ 02 сентября 2018

Для этого есть третий вариант:

  1. Убедитесь, что установлен флажок Заменить все вхождения выбранного выражения ссылками на локальную переменную установлен
  2. Нажмите Предварительный просмотр>
  3. Снимите флажки , где выражение не должно заменяться (в вашем случае, последние два)
...