Java变量命名应遵循小驼峰、语义明确、布尔带is/has/can前缀、常量全大写下划线、统一风格等规范,以提升可读性与团队协作效率。

Java 变量命名不是语法填空,而是用名字讲清“它是什么、用来干什么”。规范不是束缚,而是降低团队理解成本的通用语言。只要抓住几个关键点,就能让代码一眼可读、改起来不踩坑。
小驼峰命名是变量命名的默认节奏
所有局部变量、参数、成员变量都用小驼峰(lowerCamelCase):首字母小写,后续单词首字母大写,不用下划线、不用空格、不用缩写拼凑。
- 正确示范:userEmail、orderStatus、isPaid、httpResponseCode、maxConnectionRetries
- 常见错误:user_email(蛇形)、UserEmail(大驼峰,留给类名)、uEmail(缩写模糊)、flag(完全无语义)
- 布尔变量必须带 is/has/can 前缀,比如 isExpired、hasPermission、canRetry,这样调用时语义自然,也兼容 JavaBean 规范
名字要能“自解释”,拒绝模糊和泛化
变量名不是标签,是微型文档。看到名字就该知道它的业务角色,而不是去翻上下文猜。
- 用 userName 不用 name(避免与系统 name 冲突或歧义)
- 用 activeOrderCount 不用 count 或 num
- 用 retryDelayMs 不用 delay(单位+用途更明确)
- 循环中允许短名如 i、item,但仅限作用域极小且上下文清晰处;业务逻辑里一律用完整语义名
常量、静态字段与类型推导的配合使用
常量必须全大写+下划线,静态字段也遵循这一风格;而 var 的使用要服务于可读性,不是为了省字数。
立即学习“Java免费学习笔记(深入)”;
- 常量写法:public static final int MAX_RETRY_TIMES = 3;、DEFAULT_TIMEOUT_MS
- var 只在初始化表达式足够明确时使用,例如:var parser = new JsonParser();(类型一目了然)
- 避免:var result = service.getData();(类型需跳转查看返回值,破坏连贯阅读)
- 复杂泛型场景 var 很友好:var cache = new ConcurrentHashMap
>();
统一风格比“绝对正确”更重要
同一个模块、同一组配置、同一种状态标识,命名模式要一致。一致性带来的可预测性,比单个名字多两个字母更有价值。
- 超时相关:connectTimeoutMs、readTimeoutMs、writeTimeoutMs
- 状态标志:isActive、isLocked、isArchived(全部 is 开头)
- 错误码类常量:ERROR_INVALID_INPUT、ERROR_NETWORK_UNREACHABLE(统一 ERROR_ 前缀)
- 避免混用:有的地方叫 userId,有的叫 user_id,有的又叫 uid——这会增加认知负担


















