public/技术规范/Java后端开发规范.md

104 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Java后端开发规范
> 拟稿:[黎润豪](/lirh)<a href="https://blog.lroyia.top" target="_blank">(个人博客)</a>
>
> <div><span>版本号 1.0.0 </span></div>
>
<style>
span[color=red]{
color:red;
}
span[color=green]{
color:green;
}
</style>
## 前言
本文为公司Java后端开发的代码规范规范分如下两级
- <span color="red">【强制】</span>:开发者必须遵循的开发规范要求
- <span color="green">【推荐】</span>:开发者选择性遵循的开发规范要求
## 编程约束
### 命名
- <span color="red">【强制】</span>杜绝完全不规范的缩写,避免望文不知义。
> <span color="red">【反例】</span>AbstractClass缩写成AbsClasscondition缩写成condiFunction缩写成Fu。
- <span color="red">【强制】</span>严禁使用非全世界都知道的拼音命名。
> <span color="green">正例</span>alibaba/youku/hangzhou
> <span color="red">反例</span>suanFen【算分】getGTHTypeCode【获取个体户类型编码】
#### 类命名
- <span color="red">【强制】</span>采用大驼峰UpperCamelCase命名法禁止使用数字命名。
> <span color="green">【正例】</span>KeyPairGlobalConfig
> <span color="red">【反例】</span>areaSliceAreaSlice1AreaSlice2
- <span color="green">【推荐】</span>采用【名词】,【形容词+名词】的格式进行命名
> <span color="green">【正例】</span>SMSSenderGlobalConfig
> <span color="red">【反例】</span>SendSMS
- <span color="red">【强制】</span>抽象类必须以Abstract或Base开头工具类例外如StringUtils异常类名明必须以Exception结尾测试类必须以Test结尾。
- <span color="red">【强制】</span>接口的参数类必须要以VO或Dto结尾命名接口与接口之间的传输参数传输类必须以Dto结尾命名。
#### 方法命名
- <span color="red">【强制】</span>采用小驼峰LowerCamelCase命名法禁止使用拼音命名
- <span color="green">【推荐】</span>方法参数不多于5个多于5个后改用DTO进行传输。
#### 变量命名
- <span color="red">【强制】</span>常量与枚举均使用大写+下划线组合的方式命名
> <span color="green">【正例】</span>LIMIT_SIZEENTITY_TYPE
- <span color="red">【强制】</span>采用小驼峰LowerCamelCase命名法禁止使用拼音命名
- <span color="red">【强制】</span>局部非循环与下标变量不可使用单字母命名特殊数学含义例外如斜截式的斜率a常数b
## 异常处理
- <span color="red">【强制】</span>方法若有显式的RuntimeException异常抛出必须使用`throws`关键字将其标识到方法上
- <span color="red">【强制】</span>异常的打印均用日志对象的error等级输出
- <span color="red">【强制】</span>IDEA发现的空指针问题必须要处理掉
- <span color="red">【强制】</span>捕获异常和跑异常必须完全匹配,或者捕获异常是抛异常的父类
- <span color="red">【强制】</span>若异常被捕获,如果数据需要回滚,一定要注意进行手动回滚
## 日志规约
- <span color="red">【强制】</span>日志对象在项目引用了lombok的情况下请用@SLF4J注解声明
- <span color="red">【强制】</span>所有日志文件至少保存15天
- <span color="red">【强制】</span>日志信息拼接使用`{}`占位符,以提高可读性和拼接性能
- <span color="red">【强制】</span>生产环境进制直接使用`System.out``System.err`或`e.printStackTrace()`充当日志输出
- <span color="red">【强制】</span>避免重复打印日志浪费磁盘空间务必在日志配置文件中的子logger配置additivity=false
```xml
<logger name="com.chinaweal.dao" level="debug" additivity="false"/>
```
## 代码结构
- <span color="green">【推荐】</span>`{}`代码块嵌套不应超过4层
## 工程结构
- <span color="green">【推荐】</span>目录结构com.chinaweal.{项目简称}.{通用配置名/数据源缩写}.{controller/service/entity/mapper}