如何解决函数getPositionValue的复杂度超限(7>5)警告?
降低
getPositionValue函数圈复杂度的方案 原函数通过多个if分支判断latitude和longitude的存在情况,导致圈复杂度超标。可以通过默认值赋值的方式简化逻辑,直接消除多余分支:
优化方案1(推荐,ES2020+)
使用空值合并运算符??处理,仅当值为null或undefined时替换为0:
export function getPositionValue(station) { const latitude = station.latitude ?? 0; const longitude = station.longitude ?? 0; return `${latitude}, ${longitude}`; }
优化方案2(兼容旧环境)
如果项目环境不支持??,可以用逻辑或||替代(注意:若值为0、''等假值也会被替换):
export function getPositionValue(station) { const latitude = station.latitude || 0; const longitude = station.longitude || 0; return `${latitude}, ${longitude}`; }
原理说明
两种方案都直接为latitude和longitude设置默认值0,无需逐个分支判断,将原函数的4个执行分支压缩为1个,圈复杂度直接降到1,完全符合阈值要求,同时逻辑更简洁易读。
内容的提问来源于stack exchange,提问作者Jakub Najvárek
相关产品推荐
相关产品推荐

