js前端命名规范
📂 二、其他常见 .md 文件类型 ​
除 README.md 外,项目中还可能包含以下 Markdown 文件:
| 文件类型 | 用途说明 | 案例参考 |
|---|---|---|
| CHANGELOG.md | 记录版本更新历史(如修复的 Bug、新增特性) | [[1]6 提及版本摘要独立记录 |
| CONTRIBUTING.md | 贡献者指南(代码提交规范、测试要求、PR 流程) | [[6]7 中的协作说明 |
| LICENSE.md | 项目开源协议(如 MIT、Apache 2.0) | 7 中的协议模块 |
| DEVELOPMENT.md | 开发环境配置(本地调试、分支管理策略) | [[5]14 的扩展开发文档 |
| DOCS/*.md | 模块化文档(如 API 接口说明、架构设计) | 14 中的插件文档示例 |
好,这个问题问得非常“规范派” 👍 我直接给你一份前端(偏大厂 / 团队协作级)命名规范速查表,覆盖你刚才提到的:
- 方法
- 变量
- 是否(boolean)
- 常量
- 组件
- 事件
- 枚举 / 状态
- 接口 / 类型
你可以直接拿去当 项目规范文档的一页 用。
好,这个我给你 重新系统写一份「偏大厂 / 团队协作级」的 JS 前端命名规范速查表。
不是那种“变量用小驼峰就完事”的水文,而是 能直接进团队规范 / Code Review 用的版本。
我会把你提到的 isNon 这种命名 单独拎出来讲清楚:什么时候对、什么时候坑。
✅ JavaScript / Frontend 命名规范速查表(团队协作级) ​
目标:可读性 > 可维护性 > 可扩展性 > 避免歧义
核心原则一句话: “看到名字就知道它是什么、表示什么状态、是否可变、是否是布尔、是否是集合”
一、总体命名风格总览 ​
| 类型 | 命名风格 | 示例 |
|---|---|---|
| 变量 | lowerCamelCase |
userName |
| 函数 | lowerCamelCase |
getUserInfo() |
| 布尔值 | is / has / can / should 前缀 |
isLogin |
| 常量 | UPPER_SNAKE_CASE |
MAX_RETRY_COUNT |
| 类 / 构造函数 | UpperCamelCase |
UserService |
| 文件名 | kebab-case |
user-service.ts |
| 枚举 | UPPER_SNAKE_CASE |
USER_ROLE.ADMIN |
| 私有字段 | _ 前缀 |
_cacheMap |
二、变量命名规范(最重要) ​
1️⃣ 普通变量(名词 + 语义) ​
❌ 错误
js
let data
let info
let temp
let result
✅ 正确
js
let userInfo
let orderList
let responseData
let cachedToken
🚫 禁止使用无语义词:
data / temp / obj / arr
2️⃣ 集合 / 数组命名(必须是复数) ​
| 类型 | 正确 | 错误 |
|---|---|---|
| 数组 | userList |
user |
| Map | userMap |
users |
| Set | selectedIdSet |
ids |
js
const userList = []
const userIdMap = new Map()
const selectedIds = new Set()
三、布尔值命名(重点 + 易踩坑) ​
✅ 标准布尔前缀(只用这 4 个) ​
| 前缀 | 语义 | 示例 |
|---|---|---|
is |
状态 | isLogin |
has |
拥有 | hasPermission |
can |
能力 | canEdit |
should |
业务判断 | shouldRetry |
js
const isLoading = true
const hasError = false
const canSubmit = true
⚠️ 关于你提到的:isNonXXX 命名 ​
❌ 强烈不推荐(团队规范里会被打回) ​
js
isNonEmpty
isNonAdmin
isNonValid
❗ 问题在哪?
| 问题 | 说明 |
|---|---|
| 双重否定 | isNonEmpty === true 脑子要转两次 |
| 易误解 | Non 是不是 not?还是 null object name? |
| Code Review 成本高 | 大厂基本不允许 |
✅ 推荐替代方案(明确 + 正向) ​
| 反例 | 推荐 |
|---|---|
isNonEmpty |
isEmpty === false ❌ |
hasValue ✅ |
|
isNonAdmin |
isAdmin === false ❌ |
isNormalUser ✅ |
|
isNonValid |
isValid === false ❌ |
isInvalid ✅ |
📌 黄金规则:布尔命名只表达“正向状态”
四、函数命名规范(动词开头) ​
1️⃣ CRUD 动词表(团队统一) ​
| 动作 | 动词 |
|---|---|
| 获取 | get / fetch / load |
| 创建 | create / build |
| 更新 | update / set |
| 删除 | remove / delete |
| 校验 | validate / check |
| 转换 | transform / parse / format |
js
getUserInfo()
fetchOrderList()
validateForm()
parseJwtToken()
2️⃣ 函数命名 = 动词 + 对象 + 条件 ​
❌
js
handle()
doIt()
process()
✅
js
handleLoginSubmit()
processPaymentResult()
syncUserProfile()
五、事件 & 回调命名规范 ​
| 场景 | 命名 |
|---|---|
| 点击事件 | handleButtonClick |
| 成功回调 | onLoadSuccess |
| 失败回调 | onLoadError |
| 监听函数 | onUserChange |
js
function handleSubmitClick() {}
function onSocketMessage() {}
六、常量 & 枚举命名 ​
1️⃣ 常量(全部大写) ​
js
const MAX_PAGE_SIZE = 50
const DEFAULT_TIMEOUT = 3000
2️⃣ 枚举对象 ​
js
export const USER_ROLE = {
ADMIN: 'admin',
USER: 'user',
GUEST: 'guest',
}
七、类 / Service / Hook 命名 ​
类(名词) ​
js
class UserService {}
class AuthManager {}
class CacheStore {}
React Hooks ​
ts
useUserInfo()
useAuthStatus()
useScrollPosition()
❌
ts
useGetUser()
useFetchData()
八、临时变量(允许但有限制) ​
js
for (let i = 0; i < list.length; i++) {}
允许:
i / jidxlen
❌ 禁止用于业务逻辑
九、文件 & 目录命名(大厂常规) ​
| 类型 | 示例 |
|---|---|
| 页面 | user-profile.tsx |
| service | user.service.ts |
| hook | use-user-info.ts |
| 工具 | date-utils.ts |
| 常量 | auth.constants.ts |
备案号: 湘ICP备2021015274号-3