何减少项目里面 if-else

说几种常见方便的

1. 使用多态(面向对象)

// 优化前
function handleAnimal(animal) {
  if (animal.type === 'dog') {
    console.log('Woof!');
  } else if (animal.type === 'cat') {
    console.log('Meow!');
  } else if (animal.type === 'bird') {
    console.log('Chirp!');
  }
}

// 优化后
class Animal {
  speak() {
    throw new Error('Method not implemented');
  }
}

class Dog extends Animal {
  speak() {
    console.log('Woof!');
  }
}

class Cat extends Animal {
  speak() {
    console.log('Meow!');
  }
}

class Bird extends Animal {
  speak() {
    console.log('Chirp!');
  }
}

const animals = [new Dog(), new Cat(), new Bird()];
animals.forEach(animal => animal.speak());

2. 使用策略模式

// 优化前
function calculatePrice(type, price) {
  if (type === 'discount') {
    return price * 0.9;
  } else if (type === 'promotion') {
    return price * 0.8;
  } else {
    return price;
  }
}

// 优化后
const strategies = {
  discount: price => price * 0.9,
  promotion: price => price * 0.8,
  default: price => price,
};

function calculatePrice(type, price) {
  return (strategies[type] || strategies.default)(price);
}

 3. 使用映射表(对象或字典)

// 优化前
function getStatusText(status) {
  if (status === 1) {
    return 'Pending';
  } else if (status === 2) {
    return 'Approved';
  } else if (status === 3) {
    return 'Rejected';
  } else {
    return 'Unknown';
  }
}

// 优化后
const statusMap = {
  1: 'Pending',
  2: 'Approved',
  3: 'Rejected',
};

function getStatusText(status) {
  return statusMap[status] || 'Unknown';
}

 

4 使用三元运算符 

对于简单的可以使用三目运算符

// 优化前
let result;
if (isSuccess) {
  result = 'Success';
} else {
  result = 'Failure';
}

// 优化后
const result = isSuccess ? 'Success' : 'Failure';

5. 使用函数式编程

通过函数组合、高阶函数等方式减少 if-else

// 优化前
function processData(data) {
  if (data) {
    if (data.isValid) {
      return transform(data);
    } else {
      return 'Invalid data';
    }
  } else {
    return 'No data';
  }
}

// 优化后
const processData = data =>
  !data
    ? 'No data'
    : data.isValid
    ? transform(data)
    : 'Invalid data';

6. 使用默认值和短路运算

  • 利用逻辑运算符(&&||)和默认值来简化条件逻辑。

// 优化前
function getUserRole(user) {
  if (user && user.role) {
    return user.role;
  } else {
    return 'guest';
  }
}

// 优化后
function getUserRole(user) {
  return user?.role || 'guest';
}

7. 使用状态机

  • 对于复杂的状态逻辑,可以使用状态机来替代 if-else

// 优化前
function handleState(state) {
  if (state === 'idle') {
    console.log('Start processing');
  } else if (state === 'processing') {
    console.log('Processing...');
  } else if (state === 'done') {
    console.log('Done!');
  }
}

// 优化后
const stateMachine = {
  idle: () => console.log('Start processing'),
  processing: () => console.log('Processing...'),
  done: () => console.log('Done!'),
};

function handleState(state) {
  stateMachine[state]?.();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值