js常量命名须用全大写加下划线(upper_snake_case),仅限真正不变、全局可见、有业务含义的固定值,需通过eslint id-match规则强制校验,并在文档、ci流程及code review中落实。

JS 中常量命名统一用全大写加下划线(UPPER_SNAKE_CASE),比如 MAX_RETRY_COUNT、API_BASE_URL,这是团队可读性与维护性的基础共识,不是风格偏好,而是语义契约。
明确常量的定义边界
先统一“什么才算常量”——不是所有 const 声明的变量都该大写。只有真正不会变、全局可见、有业务含义的固定值才适用:
- 环境配置项:
const PRODUCTION = 'prod'→ 改为const ENVIRONMENT_PRODUCTION = 'prod' - 数学/协议常量:
const PI = 3.14159→const PI = 3.14159(小写也可接受,但团队需约定;更推荐const MATH_PI) - 避免误标:
const user = getUser()是不可变引用,但值可变,不满足常量语义,不应大写
用 ESLint 强制校验
光靠约定容易遗忘,必须工具化。在 .eslintrc.js 中启用 id-match 规则,精准约束常量命名:
将一个或多个视频上传至YouTube。当用户想“上传到YouTube”“发YouTube”“批量上传”“upload to YouTube”“post videos to YouTube”或发布到YouTube时使用此技能。
- 匹配所有
const声明的顶层变量(不含函数参数、for 循环变量) - 正则要求:全大写 + 下划线 + 至少一个下划线(排除单个单词如
DEBUG,鼓励语义完整如ENABLE_DEBUG_LOG) - 示例配置片段:
rules: {
"id-match": ["error", "^[A-Z][A-Z0-9_]*[A-Z0-9]$"]
}
```
配套文档与新人引导
把规范落到可执行层面,避免“看过即忘”:
- 在项目
CONTRIBUTING.md里写清楚:“常量必须使用UPPER_SNAKE_CASE,且需通过eslint --fix自动修正” - 提供正反例对比表格,贴在团队知识库首页(例如:
DEFAULT_TIMEOUT ✅vsdefaultTimeout ❌) - 新成员首次 PR 时,由 Code Reviewer 主动检查常量命名,作为必过项
和 Prettier 协同避坑
Prettier 不管命名,但会干扰 ESLint 的修复流程。确保二者不打架:
- 禁用 Prettier 对变量名的格式化(它默认不碰名字,但某些插件可能越界)
- 在
.prettierrc中明确不干预标识符:"semi": false、"singleQuote": true等只管格式,不碰命名 - CI 流程中,先跑
eslint --fix,再跑prettier --write,顺序不能反










