阿里巴巴java开发手册基础语法规范旨在提升可读性、可维护性与协作效率,强调命名语义明确、分支兜底处理、集合预设容量、循环外创建对象及慎用stream。

阿里巴巴Java开发手册中关于基础语法的规范,核心目标是提升代码可读性、可维护性与团队协作效率。这些规范不是教条,而是大量线上故障和协作痛点沉淀出的最佳实践。
变量与常量命名必须语义明确
变量名需见名知意,禁止使用缩写、拼音或无意义单字母(如 a、tmp、list1)。常量全部大写,单词间用下划线分隔;类名用UpperCamelCase;方法和参数用lowerCamelCase。
-
错误示例:
private String nm = "zhangsan"; private static final int MAX = 100; -
正确示例:
private String userName = "zhangsan"; private static final int MAX_RETRY_COUNT = 100;
所有分支结构必须有明确的else或default处理
if-else、switch-case不得遗漏兜底逻辑。即使业务上认为“不可能进入”,也应显式抛出异常或记录日志,避免静默失败。
- if语句块无论单行或多行,都必须使用大括号
{},禁止省略 - switch必须包含
default分支,即使仅作空实现或抛出UnsupportedOperationException - 避免多重嵌套if,超过三层建议抽取为独立方法或使用卫语句(guard clause)提前返回
集合与数组初始化需指定容量(可预估时)
ArrayList、HashMap等默认构造函数会使用初始容量(如10或16),若已知大致数量,应显式传入初始容量,避免多次扩容带来的性能损耗和内存浪费。
new ArrayList(expectedSize)new HashMap(expectedSize, 0.75f)- 注意:HashMap的初始容量建议设为2的幂次,或直接使用
Maps.newHashMapWithExpectedSize()(Guava)
禁止在循环内创建对象或拼接字符串
for/while循环中反复 new 对象或使用 + 拼接字符串,会显著增加GC压力。应将对象创建移至循环外,字符串拼接统一使用 StringBuilder。
- 避免:
for (...) { String s = "prefix" + i + ".suffix"; } - 推荐:
StringBuilder sb = new StringBuilder(); for (...) { sb.append("prefix").append(i).append(".suffix"); } - 流式操作(如
stream().map().collect())需评估是否引入额外开销,简单遍历不强制使用Stream
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南









