DevTips:使用早期返回来避免嵌套条件

2025-06-07

DevTips:使用早期返回来避免嵌套条件

作为一名开发人员,你会遇到一些应该被识别为代码异味的模式。其中大多数都有众所周知的解决方案。今天我想谈谈如何使用早期返回来避免 else 语句和嵌套条件。

举个例子。我需要调用服务器来查询数据库中是否存在某个用户。调用该函数的函数还会返回一个正在加载的指示符,以便我通知用户。

render() {
  const personToLookFor = 'Thierry'
  const [result, loading] = doesPersonExists(personToLookFor)

  if (!loading) {
    let message
    if (result) {
      message = `${personToLookFor} already exists.` 
    } else {
      message = `${personToLookFor} doesn't exist.`
    }
    return message
  } else {
    return 'Loading...'
  }
}
Enter fullscreen mode Exit fullscreen mode

正如你所见,嵌套的条件和 if/else 语句很难阅读。乍一看,你根本看不懂这段代码到底是什么意思。我敢打赌你以前肯定遇到过这种模式。让我们稍微重构一下,让它更易于维护!

如果呼叫仍处于挂起状态,我们可以直接退出该功能并显示加载指示器。

render() {
  const personToLookFor = 'Thierry'
  const [result, loading] = doesPersonExists(personToLookFor)

  if (loading) return 'Loading...'

  let message
  if (result) {
    message = `${personToLookFor} already exists.` 
  } else {
    message = `${personToLookFor} doesn't exist.`
  }
  return message
}
Enter fullscreen mode Exit fullscreen mode

是不是更清晰一些?我们还可以去掉 else 语句,直接返回 if 语句中的消息。

render() {
  const personToLookFor = 'Thierry'
  const [result, loading] = doesPersonExists(personToLookFor)

  if (loading) return 'Loading...'

  if (result) {
    return `${personToLookFor} already exists.` 
  }
  return `${personToLookFor} doesn't exist.`
}
Enter fullscreen mode Exit fullscreen mode

它也消除了使用消息变量的必要性。一切就绪了🙌

希望它能对你有帮助!


欢迎反馈🙏如果您有任何问题,请发推文给我@YvonnickFrin

文章来源:https://dev.to/yvonnickfrin/devtips-use-early-returns-to-avoid-nested-conditions-4i51
PREV
使用 Tesseract.js 在 JavaScript 中进行 OCR
NEXT
cURL 响应时间 如何使用 curl 测量 Web API 的响应时间