重构:"Extract Method" 错误和意外结果

Refactor: "Extract Method" error and unexpected outcome

我遇到了奇怪的重构行为。 使用这行代码:

variable = 1 + 2 + 3

当我尝试提取变量时,通过突出显示“1 + 2”,然后右键单击 -> 选择“提取变量”选项,我得到了这个结果:

newvariable74 = 1 + 2
a = newvariable74 2 + 3

我还有其他重构方面的问题。我在测试 rope examples from the docs

时得到不同的结果

例如,这段代码:

def f():
    a_var = 1
    # INFO: I'm printing `a_var`
    print 'a_var = %s' % a_var

...将 'a_var' 重命名为 'new_var' 后,新代码应如下所示:

def f():
    new_var = 1
    # INFO: I'm printing `new_var`
    print 'new_var = %s' % new_var

但是,我得到了这个:

def f():
new_var = 1
# INFO: I'm printing `a_var`
print ('a_var = %s' % new_var)

注意字符串的内容没有改变。

一些信息:

目前vscode个变量和方法的重构功能由Python扩展提供,但其重构不支持重命名功能。

对于vscode中的变量重构,您可以尝试添加括号使其被识别。

variable = (1 + 2) + 3

如果您想将vscode中的所有'a_var'重命名为'new_var',您可以尝试使用Ctrl+F2。它将更改所有出现的'a_var'在当前文件中。

当我使用'F2'时,它只会改变当前文件中的变量,'new'_var=%s'不会被识别。

您可以参考:Refactoring