pro-collection / interview-question

目标:收集全网经典面试问题
535 stars 37 forks source link

如何减少项目里面 if-else【热度: 310】 #806

Open yanlele opened 1 month ago

yanlele commented 1 month ago

关键词:减少 if-else

当项目中存在大量的 if-else 语句时,可以考虑以下几种优化方法:

  1. 策略模式

    • 创建一组策略对象,每个对象对应一种条件和处理逻辑。根据不同的条件选择相应的策略对象来执行操作。
  2. 表驱动法

    • 建立一个数据结构(如对象或数组),将条件与对应的处理函数或值关联起来,通过查找表来获取相应的处理方式。
  3. 多态

    • 如果条件判断基于不同的对象类型,可以使用多态性,让每个对象类型实现自己的处理方法。
  4. 提取函数

    • 将每个 if-else 分支中的复杂逻辑提取为独立的函数,以提高代码的可读性和可维护性。
  5. 状态模式

    • 当条件判断反映的是对象的不同状态时,可以使用状态模式来处理。

例如,使用表驱动法的示例代码如下:

const handlers = {
  condition1: () => {
    // 处理条件 1 的逻辑
  },
  condition2: () => {
    // 处理条件 2 的逻辑
  },
  // 更多条件和处理函数
};

const condition = "condition1"; // 实际的条件

if (handlers[condition]) {
  handlers[condition]();
}

通过这些方法,可以使代码更加简洁、灵活和易于维护,减少大量 if-else 带来的复杂性和混乱。

参考文档