重构:"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)
注意字符串的内容没有改变。
一些信息:
- 我用的是Python3.8.2 64位
- Visual Studio代码:1.47.1
- Linux薄荷 20
- Linux 内核 5.4.0-40-generic
目前vscode个变量和方法的重构功能由Python扩展提供,但其重构不支持重命名功能。
对于vscode中的变量重构,您可以尝试添加括号使其被识别。
variable = (1 + 2) + 3
如果您想将vscode中的所有'a_var'重命名为'new_var',您可以尝试使用Ctrl+F2
。它将更改所有出现的'a_var'在当前文件中。
当我使用'F2
'时,它只会改变当前文件中的变量,'new'_var=%s'不会被识别。
您可以参考:Refactoring
我遇到了奇怪的重构行为。 使用这行代码:
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)
注意字符串的内容没有改变。
一些信息:
- 我用的是Python3.8.2 64位
- Visual Studio代码:1.47.1
- Linux薄荷 20
- Linux 内核 5.4.0-40-generic
目前vscode个变量和方法的重构功能由Python扩展提供,但其重构不支持重命名功能。
对于vscode中的变量重构,您可以尝试添加括号使其被识别。
variable = (1 + 2) + 3
如果您想将vscode中的所有'a_var'重命名为'new_var',您可以尝试使用Ctrl+F2
。它将更改所有出现的'a_var'在当前文件中。
当我使用'F2
'时,它只会改变当前文件中的变量,'new'_var=%s'不会被识别。
您可以参考:Refactoring