TypeScript版本: 3.1.0-dev.20180807
搜索词: 重构函数模块
代码
import "fs";
function foo() {
const bar = 1; // select this line
}
let flag = false;
function doSomethingWithFlag() {
}
- 选择带有注解的行
- 选择“提取到模块范围内的函数”
预期行为:
import "fs";
function newFunction() {
return 1;
}
function foo() {
const bar = newFunction();
}
let flag = false;
function doSomethingWithFlag() {
}
或者
import "fs";
function foo() {
const bar = newFunction();
}
function newFunction() {
return 1;
}
let flag = false;
function doSomethingWithFlag() {
}
实际行为:
import "fs";
function foo() {
const bar = newFunction();
}
let flag = false;
function newFunction() {
return 1;
}
function doSomethingWithFlag() {
}
6条答案
按热度按时间rqmkfv5c1#
有几种方法可以解决这个问题:
所有参数都破坏了当前的测试,所以我认为在添加更改之前需要决定使用哪个选项。我认为@jessetrinity可以帮助;)。
mlnl4t2r2#
我认为,1和2都有道理。
ttcibm8c3#
看起来,所有“提取到X范围内的函数”重构的逻辑是将提取到该范围内下一个函数声明的位置(或该范围的末尾)。
这是否不理想,因为新的函数声明可能出现在很远的地方,或者它会破坏某些东西?
tjjdgumg4#
我认为这个逻辑是正确的,但是我不确定为什么这个问题被标记为“错误”。也许主要的关注点是在一个新的/旧的函数声明之前,除了函数之外的所有声明。
puruo6ea5#
当您最初打开此问题时,AlCalzone是否提供了更多上下文以帮助我们?
vlju58qv6#
对我来说,问题只是函数的位置。重构是有效的,但函数放置的位置似乎不太合逻辑。
在上面的示例中,
newFunction
和foo
应该放在一起,而flag
和doSomethingWithFlag
在逻辑上应该放在一起。重构后,这一点并不立即清晰,特别是如果两个函数之间有多个变量声明。