2016-05-01 51 views
1

我想重构一个函数内的变量,但只能在该函数内部重构。这在JetBrains IDE中可能吗?在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(); 
    } 
} 

如果我尝试经由重构改变内部func1可变global,其将在所有的全局范围而改变,所以在func2为好。我想阻止这一点。这可能吗?

+1

您正在试图重构** **全局变量..所以没有 - 你的情况是不可能的。您的选择:多重插入符号编辑或简单的查找/替换选择。 – LazyOne

回答

0

据我所知“当前文件”是可能的最小范围。

解决方法:

为了更好地实现你想用最少的精力是什么,我建议使用正常的搜索。

  1. 搜索“全球”(STRG + F)
  2. 将光标之前或“全球”,在你的函数中第一次出现上述(得到正确的起点,并从搜索字段中删除焦点)
  3. 点击一次经常“添加选择的下一个Occurence”(或按Alt + J)根据需要
  4. 重命名所有出现在新名称

在这里需要一些手工作业打字,但我认为它的大功能的最快方式。

1

这是一个更简单的解决方法。

webstorm refactoring

  1. func1添加一个虚拟var global
  2. 使用重构>重命名工具( + F6),而在选择func1global任何发生。
  3. 删除行(放置插入符号的线,打按Ctrl +Ÿ)中加入步骤1