You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加判断后认知复杂度超标,如何重构函数降至允许值15?

问题:添加判断后代码认知复杂度超标如何修复?

添加card.targetUrl !== "/test"的判断条件后,代码出现认知复杂度超标错误,无法提交。当前代码如下:

const link = useMemo(() => {
  if (!card?.targetUrl || card.targetUrl === "/test") {
    return "/account";
  } else {
    return card.targetUrl;
  }
}, [card]);

未添加该判断的原始代码无此错误:

const link = useMemo(() => {
  if (card?.targetUrl) {
    return card.targetUrl;
  } else {
    return "/account";
  }
}, [card]);

请问如何将认知复杂度降至允许的15以内?


解决方案

可以通过简化逻辑表达式,将分支判断合并为单一表达式,减少代码的认知复杂度:

方案1:使用三元表达式

const link = useMemo(() => {
  return card?.targetUrl && card.targetUrl !== "/test" ? card.targetUrl : "/account";
}, [card]);

方案2:使用逻辑与/或组合

const link = useMemo(() => {
  return (card?.targetUrl !== "/test" && card.targetUrl) || "/account";
}, [card]);

这两种写法都将原有的if-else分支转化为线性的逻辑判断,消除了显式的分支嵌套,从而降低了代码的认知复杂度,同时完全保留了原有业务逻辑:

  • 当card.targetUrl不存在,或者等于/test时,返回/account
  • 其他情况返回card.targetUrl

内容的提问来源于stack exchange,提问作者Polina Usheva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 05:19:56