变量命名需语义清晰、风格统一、符合语言惯例:用描述性名称如userlogincount而非ulc,布尔变量加is_/has_/can_前缀,按语言选小驼峰或蛇形等风格,避开语法雷区与作用域混淆。

变量命名不是“起个名字就行”,而是让别人(包括未来的你)一眼看懂它存什么、干什么、在哪儿用。核心就三点:语义清晰、风格统一、符合语言惯例。
用描述性名称,别省字
名称要能回答“这个变量代表什么”。避免缩写歧义或模糊代词:
- ✅ userLoginCount、isProcessingComplete、maxRetryAttempts
- ❌ ulc、done(没说明谁完成)、temp(完全不表达意图)
布尔变量优先加 is_、has_、can_ 前缀,比如 isActive 比 active 更明确是状态判断。
按语言选主流风格,别混搭
不同语言有广泛接受的约定,遵循它比“自创风格”更重要:
- JavaScript / Java / C# / PHP(变量/函数):小驼峰(userName、calculateTotal)
- Python / Ruby / C / PHP(配置/字段):蛇形(user_name、db_host)
- 类名(多数语言):大驼峰(UserController、HttpRequest)
- 常量(通用):全大写+下划线(MAX_LOGIN_ATTEMPTS、API_VERSION)
避开语法和语义雷区
有些名字看着能用,实则埋坑:
- 不以数字开头(2ndAttempt ❌ → secondAttempt ✅)
- 不覆盖内置名(list、str、id ❌)
- 不使用保留字(class、return、async ❌)
- 不滥用单字母(循环计数器 i、j 可接受;但 a、x 作业务变量 ❌)
- 区分大小写(userId ≠ UserID,别靠大小写微调含义)
作用域和可见性要体现在名字里
名字本身可暗示使用范围,减少理解成本:
- Ruby 中 @current_user 明确是实例变量
- Python 中 _internal_flag 表示“请勿直接访问”
- PHP 或 JS 中 privateData 不如 _privateData(约定俗成)或现代私有字段 #privateData
- 避免靠名字“伪装”作用域,比如 globalUser 不如真正用模块/作用域控制











