2021-12-20 16:30:26 +08:00
|
|
|
|
# Java后端开发规范
|
|
|
|
|
|
|
|
|
|
|
|
> 拟稿:[黎润豪](/lirh)<a href="https://blog.lroyia.top" target="_blank">(个人博客)</a>
|
|
|
|
|
|
>
|
|
|
|
|
|
> <div><font>版本号 1.0.0 </font></div>
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
## 前言
|
|
|
|
|
|
|
|
|
|
|
|
本文为公司Java后端开发的代码规范,规范分如下两级:
|
|
|
|
|
|
|
|
|
|
|
|
- <font color="red">【强制】</font>:开发者必须遵循的开发规范要求
|
|
|
|
|
|
- <font color="green">【推荐】</font>:开发者选择性遵循的开发规范要求
|
|
|
|
|
|
|
|
|
|
|
|
## 编程约束
|
|
|
|
|
|
|
|
|
|
|
|
### 命名
|
|
|
|
|
|
|
|
|
|
|
|
- <font color="red">【强制】</font>杜绝完全不规范的缩写,避免望文不知义。
|
|
|
|
|
|
|
|
|
|
|
|
> <font color="red">【反例】</font>:AbstractClass缩写成AbsClass;condition缩写成condi;Function缩写成Fu。
|
|
|
|
|
|
|
|
|
|
|
|
- <font color="red">【强制】</font>严禁使用非全世界都知道的拼音命名。
|
|
|
|
|
|
|
|
|
|
|
|
> <font color="green">正例</font>:alibaba/youku/hangzhou
|
|
|
|
|
|
> <font color="red">反例</font>:suanFen【算分】,getGTHTypeCode【获取个体户类型编码】
|
|
|
|
|
|
|
|
|
|
|
|
#### 类命名
|
|
|
|
|
|
|
|
|
|
|
|
- <font color="red">【强制】</font>采用大驼峰(UpperCamelCase)命名法,禁止使用数字命名。
|
|
|
|
|
|
|
|
|
|
|
|
> <font color="green">【正例】</font>:KeyPair,GlobalConfig
|
|
|
|
|
|
> <font color="red">【反例】</font>:areaSlice,AreaSlice1,AreaSlice2
|
|
|
|
|
|
|
|
|
|
|
|
- <font color="green">【推荐】</font>采用【名词】,【形容词+名词】的格式进行命名
|
|
|
|
|
|
|
|
|
|
|
|
> <font color="green">【正例】</font>:SMSSender,GlobalConfig
|
|
|
|
|
|
> <font color="red">【反例】</font>:SendSMS
|
|
|
|
|
|
|
|
|
|
|
|
- <font color="red">【强制】</font>抽象类必须以Abstract或Base开头(工具类例外:如StringUtils);异常类名明必须以Exception结尾;测试类必须以Test结尾。
|
|
|
|
|
|
|
|
|
|
|
|
- <font color="red">【强制】</font>接口的参数类必须要以VO或Dto结尾命名;接口与接口之间的传输参数传输类必须以Dto结尾命名。
|
|
|
|
|
|
|
|
|
|
|
|
#### 方法命名
|
|
|
|
|
|
|
2021-12-21 17:29:15 +08:00
|
|
|
|
- <font color="red">【强制】</font>采用小驼峰(LowerCamelCase)命名法,禁止使用拼音命名
|
2021-12-20 16:30:26 +08:00
|
|
|
|
|
|
|
|
|
|
- <font color="green">【推荐】</font>方法参数不多于5个,多于5个后改用DTO进行传输。
|
|
|
|
|
|
|
2021-12-21 17:29:15 +08:00
|
|
|
|
#### 变量命名
|
|
|
|
|
|
|
|
|
|
|
|
- <font color="red">【强制】</font>常量与枚举均使用大写+下划线组合的方式命名
|
|
|
|
|
|
|
|
|
|
|
|
> <font color="green">【正例】</font>LIMIT_SIZE,ENTITY_TYPE
|
|
|
|
|
|
|
|
|
|
|
|
- <font color="red">【强制】</font>采用小驼峰(LowerCamelCase)命名法,禁止使用拼音命名
|
|
|
|
|
|
|
|
|
|
|
|
- <font color="red">【强制】</font>局部非循环与下标变量,不可使用单字母命名(特殊数学含义例外,如斜截式的斜率a,常数b)
|
|
|
|
|
|
|
2021-12-20 16:30:26 +08:00
|
|
|
|
## 异常处理
|
|
|
|
|
|
|
2021-12-21 17:29:15 +08:00
|
|
|
|
- <font color="red">【强制】</font>方法若有显式的RuntimeException异常抛出,必须使用`throws`关键字将其标识到方法上
|
|
|
|
|
|
|
|
|
|
|
|
- <font color="red">【强制】</font>异常的打印均用日志对象的error等级输出
|
|
|
|
|
|
|
|
|
|
|
|
- <font color="red">【强制】</font>IDEA发现的空指针问题必须要处理掉
|
|
|
|
|
|
|
|
|
|
|
|
- <font color="red">【强制】</font>捕获异常和跑异常必须完全匹配,或者捕获异常是抛异常的父类
|
|
|
|
|
|
|
|
|
|
|
|
- <font colr="red">【强制】</font>若异常被捕获,如果数据需要回滚,一定要注意进行手动回滚
|
|
|
|
|
|
|
2021-12-20 16:30:26 +08:00
|
|
|
|
## 工程结构
|