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