清晰代码应减少嵌套层级,优先提前返回、用switch处理多值判断、三元简化简单分支、复杂条件拆分为独立函数或变量。

嵌套条件判断容易让代码变深、难追踪,关键不是“能不能嵌套”,而是“要不要嵌套”。真正清晰的写法,是减少嵌套层级、提前拦截无效路径、用合适结构表达逻辑意图。
用提前返回代替深层 if 嵌套
当某个条件不满足时,立刻处理并退出,而不是缩进进一层再写 else。这样主逻辑始终在左对齐位置,一眼看清“正常流程”。
- 错误写法:层层缩进检查
- 正确写法:先校验必要前提,不满足就 return 或 throw
- 例如用户登录后操作:先判断 loginState,再判断权限,再执行业务——每一步失败都提前结束,避免形成 3 层 if 块
把多值判断交给 switch,别硬撑 if-else if 链
当判断的是同一个变量是否等于几个固定值(比如 status === 'pending' / 'success' / 'error'),switch 更直观、更易维护,也天然防止漏掉 break 导致的意外穿透(只要记得加 break)。
- 适合场景:API 状态码、枚举字段、路由类型、按钮点击事件名等
- 注意:switch 使用严格相等(===),字符串和数字别混用
- default 分支建议保留,哪怕只写个 console.warn,避免遗漏未覆盖情况
用三元运算符或逻辑运算符简化简单分支
单行赋值或简单动作,没必要写完整 if 块。比如设置默认值、触发简单副作用、返回布尔结果。
- const name = user?.name || '游客'
- isLoading && showLoadingSpinner()
- return isValid ? 'ok' : 'error'
- 但别嵌套三元:a ? b : c ? d : e 容易看花眼,此时该用 if 或 switch
把复杂条件拆成独立函数或变量
if (user.role === 'admin' && user.status === 'active' && Date.now() - user.lastLogin
- const canAccessDashboard = isAdmin(user) && isActive(user) && isRecentLogin(user)
- if (canAccessDashboard) { ... }
- 函数名即文档,后续修改逻辑也只需改一处
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











