Java变量命名必须采用小驼峰(lowerCamelCase),即首字母小写、后续单词首字母大写、无下划线或空格;布尔变量须加is/has/can等前缀以明确状态语义;命名需语义清晰、上下文一致,禁用模糊缩写、数字开头、中文及特殊符号。

变量命名不是填空题,而是写一句话——用最短的英文词组,把“它是什么、干什么”说清楚。Java 小驼峰(camelCase)是基础,但真正提升可读性和协作效率的,是背后那套语义逻辑和团队共识。
用小驼峰写出“能读的句子”
首字母小写,后续单词首字母大写,不加下划线、不混数字开头、不用中文或特殊符号。这不是为了迎合编译器,而是让名字像自然语言一样被快速解析。
- 正确示范:`userLoginCount`、`httpStatusCode`、`xmlParserConfig` —— 每个词都承担语义,顺序符合认知习惯(主体→动作/属性→修饰)
- 常见陷阱:`ulc`(缩写无上下文)、`3rdParty`(数字开头非法)、`user_name`(蛇形命名,破坏IDE自动补全和代码检查)
- IDE 会基于小驼峰做智能提示,比如输入 `userL` 就能弹出 `userName`、`userLevel`、`userLoginTime`,前提是命名本身结构清晰
布尔变量必须带“状态感”
别只写 `active` 或 `valid`,它们看起来像普通属性,实际却是判断依据。加上 `is`、`has`、`can`、`should` 等前缀,一眼就能识别这是条件分支的源头。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 推荐写法:`isActive`、`hasPermission`、`canEdit`、`shouldRetry` —— 调用时语义完整,如 `if (isActive)` 读起来就是一句自然判断
- 避免模糊:`flag`、`status`、`enabled`(单独出现时无法确定作用域),哪怕 `isEnabled` 也比 `enabled` 更明确
- 这还兼容 JavaBean 规范,`isXXX()` 方法会被框架(如 Spring、Jackson)自动识别为布尔属性访问器
让每个名字自带上下文线索
同一个类或模块里,相似概念要用一致的词根和结构。命名不是孤立的,而是一组“词汇家族”,靠模式降低理解成本。
立即学习“Java免费学习笔记(深入)”;
- 超时相关统一用 `xxxTimeoutMs`:`connectTimeoutMs`、`readTimeoutMs`、`writeTimeoutMs`
- 配置项统一用 `xxxThreshold`:`retryThreshold`、`memoryThreshold`、`rateLimitThreshold`
- 循环内临时变量可以简短(`item`、`i`),但业务逻辑中必须完整:用 `orderItem` 而非 `oi`,用 `paymentMethod` 而非 `pm`(除非全项目约定 `pm`=payment method)
拒绝“自我解释”的幻觉
别假设别人懂你的缩写,也别指望自己三个月后还记得 `svc` 指的是 service 还是 scheduler。命名要经得起“脱离上下文”的考验。
- 通用缩写可接受:`URL`、`ID`、`XML`、`JSON`、`HTTP` —— 它们已是行业通用符号
- 业务缩写需谨慎:`cust`(customer)、`acct`(account)在内部系统可能通行,但对外交付或开源项目中应优先写全称
- 拼音、数字代词、单字母变量(除 `i/j/k` 在简单循环中)一律禁用:`ym`(yearMonth?)、`a1`、`tmp` 都是可读性杀手

















