在写判断时不使用if-else

今天在看别人写的代码时,发现在写判断时都是if,没有写else,这样我产生了疑问,然后发现不写if-else会更好。

下面是一段代码

if (!value) {
  return "";
} else if (value.length > vlength) {
  return value.slice(0, vlength) + '...';
} else {
  return value;
}

为什么要这样写:

1. 提前返回(Early Return)风格

   原代码采用 “提前返回”(Early Return 或 Guard Clause)的编程风格,即:

  • 先处理异常/边界情况(如 !value),直接 return 退出。

  • 再处理核心逻辑(长度检查)。

  • 最后默认情况(直接返回原值)。

优点

  • 减少嵌套:避免多层 if-else 嵌套,代码更扁平易读。

  • 逻辑清晰:每个条件处理完后立即返回,后续代码无需考虑之前的条件。

  • 易于扩展:后续新增条件时,只需在顶部添加新的 if-return,不影响原有逻辑。

 两者对比

// 有 else 的版本(嵌套较深)
if (!value) {
  return "";
} else {
  if (value.length > vlength) {
    return value.slice(0, vlength) + '...';
  } else {
    return value;
  }
}

// 无 else 的版本(更扁平)
if (!value) return "";
if (value.length > vlength) return value.slice(0, vlength) + '...';
return value;

2. 逻辑等价性

在函数中,return 会立即终止执行。因此:

  • 如果 !value 为 true,执行第一个 return,后续代码不会运行。

  • 如果 value.length > vlength 为 true,执行第二个 return,后续代码不会运行。

  • 只有前两个条件都不满足时,才会执行最后的 return value

因此,无需 else,因为 return 已经确保了逻辑的排他性。


3. 代码简洁性

  省略 else 可以减少代码行数和冗余关键字,尤其是在简单逻辑中。例如:

// 更简洁
if (cond1) return a;
if (cond2) return b;
return c;

// 冗余 else
if (cond1) {
  return a;
} else {
  if (cond2) {
    return b;
  } else {
    return c;
  }
}

何时建议用 else

以下情况更适合保留 else

  1. 分支逻辑复杂:每个分支包含多行代码时,else 可以提高块级作用域的清晰度。

if (cond1) {
  // 多行逻辑...
} else {
  // 多行逻辑...
}

   2. 需要显式表达互斥性:当条件之间不是完全独立时,else if 能更直观地表达“否则如果”的关系。

if (x > 10) {
  // ...
} else if (x > 5) {  // 明确表示 x <= 10 且 x > 5
  // ...
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值