Dus*_*etz 4 javascript python eclipse refactoring automated-refactoring
Eclipse能够利用编译的字节码来启用"魔术重构"功能 - 重命名方法,跟踪类层次结构和跟踪方法调用.
存在哪些技术障碍使得Python和Javascript等语言难以实现?
因为动态绑定.Python是一种动态语言,您可以使用变量完成几乎所有操作.您甚至可以访问globals-dict并引入由运行时值组成的新变量.
因此,IDE无法确定何时存在哪些变量.看这个例子:
#silly.py
import sys
if len(sys.argv) > 1:
thisNowExists = True
#1
try:
if thisNowExists:
print("this existed before")
except NameError:
print("this _now_ exists")
thisNowExists = True
Run Code Online (Sandbox Code Playgroud)
没有人或IDE可以知道是否thisNowExists在该位置定义#1,因此如果您想重命名thisNowExists该点下面的愚蠢名称,如果我们之前#1也应该重命名该外观,则它是未定义的.
您必须进行高级控制流分析,以便thisNowExists在try/catch语句下定义一个好的猜测,但由于脚本(thisNowExists = 1; import silly)和排序的动态加载,它甚至可以在import sys没有参数之前存在.
以不同方式命名变量,查找/替换是您的最佳选择;)
| 归档时间: |
|
| 查看次数: |
1168 次 |
| 最近记录: |