Eclipse 能够利用编译的字节码来启用“神奇重构”功能——重命名方法、向上和向下跟踪类层次结构以及通过方法调用进行跟踪。
存在哪些技术障碍使得 Python 和 Javascript 等语言更难做到这一点?
因为动态绑定。 Python 是一种动态语言,您可以用变量做几乎所有事情。您甚至可以访问全局字典并引入由运行时值组成的新变量。
因此 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
人类或 IDE 无法知道是否thisNowExists
定义在位置#1
,所以如果你想重命名愚蠢的名字thisNowExists
低于该点,我们是否应该重命名之前的外观是未定义的#1
, too.
您必须进行高级控制流分析才能很好地猜测thisNowExists
定义在try/catch语句下面,但是由于脚本的动态加载(thisNowExists = 1; import silly
)和排序,它甚至可能存在于之前import sys
没有争论。
以不同的方式命名你的变量,查找/替换是你最好的选择;)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)