阿里巴巴Java开发手册(黄山版)编码规范技能
概述
本技能基于《阿里巴巴Java开发手册(黄山版)》,指导在Java开发中遵循统一的编码规范。规约分三级:
- 【强制】:必须遵守,违反会导致严重后果
- 【推荐】:尽量遵守,提升代码质量
- 【参考】:理解原则,结合实际情况使用
规范体系总览
本技能涵盖七大维度,详细规则见各参考文件:
| 维度 | 文件 | 内容 |
|---|---|---|
| 一、编程规约 | references/01-programming.md |
命名、常量、格式、OOP、日期、集合、并发、控制语句、注释、前后端、其他 |
| 二、异常日志 | references/02-exception-logging.md |
错误码、异常处理、日志规约 |
| 三、单元测试 | references/03-unit-testing.md |
单元测试规范 |
| 四、安全规约 | references/04-security.md |
安全编码规范 |
| 五、MySQL数据库 | references/05-mysql.md |
建表、索引、SQL、ORM映射 |
| 六、工程结构 | references/06-project-structure.md |
应用分层、二方库依赖、服务器配置 |
| 七、设计规约 | references/07-design.md |
系统设计规范 |
快速参考:最高频强制规则
命名规范(必读)
- 类名用
UpperCamelCase(DO/DTO/BO/VO例外) - 方法名、变量名用
lowerCamelCase - 常量全大写,单词间下划线:
MAX_STOCK_COUNT - 包名全小写、单数形式
- 抽象类以
Abstract/Base开头;异常类以Exception结尾;测试类以Test结尾 - POJO布尔类型变量不加
is前缀 - Service/DAO 实现类后缀
Impl
代码格式(必读)
- 4空格缩进,禁止使用Tab
- 单行不超过120字符
- 单方法不超过80行
- 大括号不换行:
if (x) { - 运算符两侧加空格
OOP关键规则(必读)
- 覆写方法必须加
@Override - 不能使用
==比较Integer,必须用equals() - 浮点数比较用
BigDecimal或误差范围 - 禁止
new BigDecimal(double),用new BigDecimal("0.1")或BigDecimal.valueOf(0.1) - POJO类属性必须用包装类型,局部变量用基本类型
- POJO必须写
toString()方法 - Object的
equals用常量在前:"test".equals(param)而非param.equals("test")
并发关键规则(必读)
- 禁止用
Executors创建线程池,必须用ThreadPoolExecutor SimpleDateFormat不能是static,或用ThreadLocal;推荐JDK8DateTimeFormatterThreadLocal必须在finally中remove()- 双重检查锁中目标属性必须声明为
volatile
集合关键规则(必读)
- 判空用
isEmpty()而非size() == 0 foreach循环中禁止remove/add,用iteratortoArray必须传入new String[0]Collections.emptyList()返回的是不可变集合
如何使用本技能
生成Java代码时,按照以下步骤:
- 命名阶段:参照
references/01-programming.md的命名风格部分 - 代码实现:参照对应的OOP规约、集合处理、并发处理规则
- 数据库操作:参照
references/05-mysql.md - 异常处理:参照
references/02-exception-logging.md - 安全相关:参照
references/04-security.md
当用户要求审查代码时,逐项检查上述规范并给出具体改进建议,标注违反的规则等级(强制/推荐/参考)。