Skip to content
标签
note
字数
324 字
阅读时间
2 分钟

多个 if 分支用三木运算符优化

带有 IF 的代码:

js
function customerValidation(customer) {
  if (!customer.email) {
    return error('email is require')
  } else if (!customer.login) {
    return error('login is required')
  } else if (!customer.name) {
    return error('name is required')
  } else {
    return customer
  }
}

重构后代码:

js
const customerValidation = customer =>
  !customer.email   ? error('email is required')
  : !customer.login ? error('login is required')
  : !customer.name  ? error('name is required')
                    : customer

switch 语句用 map 映射

带有 switch 的代码:

js
switch(breed){
    case 'border':
      return 'Border Collies are good boys and girls.';
      break;  
    case 'pitbull':
      return 'Pit Bulls are good boys and girls.';
      break;  
    case 'german':
      return 'German Shepherds are good boys and girls.';
      break;
    default:
      return 'Im default'
}

重构后代码:

js
const dogSwitch = (breed) =>({
  "border": "Border Collies are good boys and girls.",
  "pitbull": "Pit Bulls are good boys and girls.",
  "german": "German Shepherds are good boys and girls.",  
})[breed]||'Im the default';

dogSwitch("border xxx")

复杂分支使用策略模式

场景:多个表单校验
参考:如何借助策略模式优化条件分支 - 掘金

状态模式

将过程切面化,分切面按步骤流转事件的状态

参考:条件语句的多层嵌套问题优化,助你写出不让同事吐槽的代码-阿里云开发者社区

参考

javascript - 避免在 JS 中过多使用 IF 语句优化技巧 - 终身学习者 - SegmentFault 思否

贡献者

The avatar of contributor named as jiechen jiechen

页面历史

撰写