为什么 eclipse-python 没有神奇的重构?

2024-01-23

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(使用前将#替换为@)

为什么 eclipse-python 没有神奇的重构? 的相关文章

随机推荐