如何优化这段嵌套if语句?寻求代码简化改进方案
代码简化与改进思路
针对这段TypeScript代码,我们可以从减少重复判断、简化条件赋值、提升可读性这几个方向入手优化:
核心优化点
- 直接布尔赋值替代分支:
requirementsMet的值完全由判断条件决定,无需用if-else分支,直接赋值即可。 - 消除冗余的if判断:所有flag的赋值可以直接通过布尔表达式完成,不需要单独的if语句包裹。
- 提取重复访问的变量:把重复用到的
this.myOrder.myIndicator和this.myOrder.myCode提取为局部变量,减少重复的对象属性访问,同时让代码更简洁。 - 补全flag重置逻辑:原代码中当
requirementsMet为false时,flag1/2/3没有被重置为false,这可能是逻辑漏洞,优化时补上这部分逻辑。
优化后的代码
public requirementsMet: boolean = false; public flag1: boolean = false; public flag2: boolean = false; public flag3: boolean = false; public check() { const { myIndicator, myCode } = this.myOrder; this.requirementsMet = myIndicator || myCode === '123'; if (this.requirementsMet) { this.flag1 = myIndicator && myCode === null; this.flag2 = myIndicator && myCode === '123'; this.flag3 = myIndicator && !!myCode; // !!确保转为布尔值,避免myCode为0/''等假值的情况 } else { // 重置所有flag为初始状态 this.flag1 = false; this.flag2 = false; this.flag3 = false; } }
进一步精简(可选)
如果想彻底消除分支,可以把flag的赋值也合并为一行逻辑,利用三元运算符:
public check() { const { myIndicator, myCode } = this.myOrder; const meetsRequirements = myIndicator || myCode === '123'; this.requirementsMet = meetsRequirements; this.flag1 = meetsRequirements ? (myIndicator && myCode === null) : false; this.flag2 = meetsRequirements ? (myIndicator && myCode === '123') : false; this.flag3 = meetsRequirements ? (myIndicator && !!myCode) : false; }
这样的代码结构更清晰,冗余判断被消除,同时也补全了原代码中可能存在的flag未重置的问题。
内容的提问来源于stack exchange,提问作者user17346867
相关产品推荐
相关产品推荐

