Javascript 如何重构函数中的早期返回?
这里的问题是,我有多个早期返回点,其中代码基本上是重复的 我想学习一种优化重构的方法,或者:Javascript 如何重构函数中的早期返回?,javascript,Javascript,这里的问题是,我有多个早期返回点,其中代码基本上是重复的 我想学习一种优化重构的方法,或者: 返回仅一次-或 不要重复返回未定义的零件 function fn(foo) { if (!foo) { return undefined; } const bar = some_calculations(foo) if (!bar) { return undefined; } const baz = some_calculations_with(bar, fo
返回
仅一次-或代码>零件
function fn(foo) {
if (!foo) {
return undefined;
}
const bar = some_calculations(foo)
if (!bar) {
return undefined;
}
const baz = some_calculations_with(bar, foo)
if (!baz) {
return undefined;
}
return baz * 2
}
我认为,就性能而言,您的代码经过了优化。此外,我认为它很容易阅读和理解。一个问题(正如评论中所指出的)就是它履行了太多的职责 记住,考虑到你的参数
仅返回一次
- 不要重复返回未定义的
代码>零件
中短路分配。完全没有返回
与返回未定义
相同
const some_计算=(foo)=>“bar”;
用=(bar,foo)=>“baz”计算常数;
功能fn(foo){
如果(foo&(bar=some_计算(foo))&&(baz=some_计算(bar,foo)))
返回baz;
}
设noResult=fn();
控制台日志(noResult);
让结果=fn(“foo”);
控制台日志(结果)如果没有理由继续这个函数,那么我认为提前返回更有效。我想你写的东西没有什么特别不理想的地方,因为所有的测试看起来都不一样。你说的“优化”是什么意思?这似乎与优化无关。您的意思是改进代码样式吗?通常,您可以通过使用let
,有条件地分配它,然后在函数末尾返回它来避免多次返回。一个函数应该有一个单独的责任,而您的函数有三个。所谓优化——我的意思是重构,fn
代码现在很难阅读,这不是我想要实现的。你的问题中没有提到可读性。您要求重构“return
仅一次”和“不要重复returnundefined;
部分”,我相信我的回答已经满足了这两个要求。如果你想要一个可读的版本,我建议你坚持现有版本。将来,如果你想要一个提供XYZ的答案,请确保你的问题要求XYZ。我不认为我必须明确地说明显而易见的事情。我对你的答案投了赞成票,但不能接受。