如何解决Sonar问题:将嵌套三元运算提取为独立语句
解决嵌套三元运算的Sonar问题
原代码中的嵌套三元运算被Sonar标记为需要优化,我们可以通过拆解逻辑、提取独立语句的方式重构代码,同时保持原有功能不变:
原代码
public sortByPredicate(dataList: any[], predicate: string): any[] { return dataList.sort((a: string, b: string) => (a[predicate] > b[predicate]) ? 1 : ((b[predicate] > a[predicate]) ? -1 : 0)); }
重构后代码
public sortByPredicate(dataList: any[], predicate: string): any[] { return dataList.sort((a, b) => { const aValue = a[predicate]; const bValue = b[predicate]; if (aValue > bValue) { return 1; } else if (bValue > aValue) { return -1; } return 0; }); }
优化说明
- 把重复访问的
a[predicate]和b[predicate]提取为独立变量,减少重复计算同时提升可读性 - 用
if-else分支替代嵌套三元表达式,逻辑层级更清晰,符合Sonar的代码规范要求 - 移除了冗余的类型声明,TypeScript可通过上下文自动推断参数类型,让代码更简洁
内容的提问来源于stack exchange,提问作者Walle
相关产品推荐
相关产品推荐

