变量命名应自带业务与结构含义,避免模糊词;统一风格并分作用域约束;结构化组织声明位置;借助eslint、ci和ide工具保障一致性。

核心是让变量名本身成为线索,而不是靠记忆或翻代码找。命名混乱导致找不到变量,本质是信息没前置、不一致、不可追溯。解决重点不在“查得快”,而在“一眼就该知道它在哪、是什么、怎么用”。
变量名必须自带业务和结构含义
避免用模糊词如data、info、tmp、obj,它们不表达任何上下文。应直接体现“谁的什么,在什么场景下”:
- 订单列表 → pendingOrderList(状态+实体+类型),不是list1或orderData
- 用户搜索关键词 → userSearchKeyword(主体+动作+对象),不是kw或searchStr
- 缓存过期时间(秒) → cacheTtlSeconds(用途+单位),不是timeout或t
统一命名风格并强制约束范围
同一项目中所有变量遵循相同规则,且不同作用域有明确区分:
- 局部变量用小驼峰:currentRetryCount、isEmailValid
- 常量全大写加下划线:MAX_RETRY_ATTEMPTS、DEFAULT_PAGE_SIZE
- 布尔变量带is/has/should前缀:hasPermission、shouldRetry
- 禁止在函数内定义与参数同名的变量(如参数叫userId,又声明let userId),避免遮蔽和混淆
结构化组织变量声明位置
变量不是散落在各处的“零件”,而应按逻辑分组、集中声明:
- 配置类变量统一放在config/目录下的constants.ts或settings.js
- 接口响应字段映射变量,与API调用点放在一起,或单独建types/api/模块
- 组件内部状态变量,在文件顶部用注释区块归类:// === Form State ===,下面列formValues、errors、isSubmitting
借助工具自动识别和拦截问题
人工守规矩易遗漏,用轻量机制保障一致性:
- ESLint 配置no-shadow(禁用变量遮蔽)、id-length(限制最小长度,如≥3)、naming-convention(强制驼峰/大写规则)
- 在CI中加入检查:扫描源码,报告所有含temp、flag、val等模糊词的变量名
- IDE启用“Rename Symbol”快捷键(如VS Code F2),改一个名自动同步所有引用,降低因手动改名不全引发的错位











