From a9b1ca20527a1328384eb89a87dc3fcddd93072a Mon Sep 17 00:00:00 2001 From: lroyia <814876716@qq.com> Date: Wed, 22 Dec 2021 11:36:05 +0800 Subject: [PATCH] =?UTF-8?q?'=E6=A0=B7=E5=BC=8F=E6=A0=87=E8=AF=86=E6=8D=A2?= =?UTF-8?q?=E5=9B=BE=E7=89=87'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- img/icon/反例.png | Bin 0 -> 491 bytes img/icon/强制.png | Bin 0 -> 505 bytes img/icon/推荐.png | Bin 0 -> 472 bytes img/icon/正例.png | Bin 0 -> 447 bytes 技术规范/Java后端开发规范.md | 66 ++++++++++++------------- 5 files changed, 33 insertions(+), 33 deletions(-) create mode 100644 img/icon/反例.png create mode 100644 img/icon/强制.png create mode 100644 img/icon/推荐.png create mode 100644 img/icon/正例.png diff --git a/img/icon/反例.png b/img/icon/反例.png new file mode 100644 index 0000000000000000000000000000000000000000..d43210bcbac14cfdbfdc661cbac7670a669eae43 GIT binary patch literal 491 zcmeAS@N?(olHy`uVBq!ia0vp^dO*z2!3-qVOy`{jq!^2X+?^P2p46!aaySb-B8wRq zxP?KOkzv*x380`~fKP}kkp53SwC4Ltb)bn-B|(0{3<3rX|Ly(j*PoxDkl=8jU_rox z4;MDvf4_ge%fcN>KnDtVx;TbZ%xS%JyQoEhhv9<5qg|pL;icdI*Kc8Q+&1@|iN6b< zN(00H_DjV*A&*ae-K5k1^{4CXl(sifhnXyo2_kAQukQ2bfNrpS;aM`Mk*);JKp$b+9&h=?*t7FUZqRyrG|fc=BhC`9bdTq zM@W9q9i^lSnT#~0HSG++$EH7#TesS+X?7L2lissqmmgJ>CCr*BEh1SZxO?FZZuYW0 z9G_zPx5>^AD-7a2yyUjDU!V6u^V@2(N;|J_v%mgzZQ0(7ANIYtvwK});~s}rJ>&CV zCjQm<-_>&D`L5SSbJo~Y9p^v3zB+|b>9f&_C+jQT`CR4F+`)D*enrI+tI!imN~=}} zt@-=AGK%T2a{TSy{O`&;E-bf`<1d||`Ksr_F%_u?c|BtL4z2E6W4iRx6}9*Olmed| b{lh3ZjeFl6-+%hRz+~`r^>bP0l+XkKQVG&x literal 0 HcmV?d00001 diff --git a/img/icon/推荐.png b/img/icon/推荐.png new file mode 100644 index 0000000000000000000000000000000000000000..6d9bbb99906977fa487f4956711e63427972fefb GIT binary patch literal 472 zcmeAS@N?(olHy`uVBq!ia0vp^dO*z2!3-qVOy`{jq!^2X+?^P2p46!aaySb-B8wRq zxP?KOkzv*x380{BfKP}kkY@N#DXKLqbOf3sUJ~RN%phQ((D2{kz=wc@{RIoozu$2G zg8hT}6Sk>-cn)+Fr>Bc!NX4AkNrBT2D{#05I!=}{y=?KWex+!~tZDq!3#LzJ=Q21P zVHd{N$9?Xg@r0@Z*_s!}x9xxQr<=QDR>ZS_56o=)CKulFIsf30;RltwhSNFHJ2(D0 zsv-Mh-!v)*e8H~%j1z?xG1tdluit4>vd#BHL3z1x>FcN`mfVUVT;&=9EXO-% zU)v>kYGY?qUf7nmceoz^JNGR}NA3N~51TIiG3#A={W-@A`!J+f3j~A}q-M8z^2h+cg ze%G)p?s$wWc&Y|`1onC z2=fQap1HZtEtm8swtcJp^QeQNb4T`3%cqgoTqkLC*Mz@&t{Sv*%dsUgpH6P~PAW>z zer`Hx+MR=m))j{9Ek4D3R($YanZ|O*x2^d$+fO;Nvj^E-`hCRNeCMi%XT{U2nkT81 zpSsL^eRb4G*IhD8zb5?N{lbQ0p|k(2IJ4um zeP1m9uj6-ruJT{&Hr8eK=RYdxFv-nc bZux^-c_QbgV1cIdpm6qd^>bP0l+XkK?wh#I literal 0 HcmV?d00001 diff --git a/技术规范/Java后端开发规范.md b/技术规范/Java后端开发规范.md index 01b8cdf..90b50c3 100644 --- a/技术规范/Java后端开发规范.md +++ b/技术规范/Java后端开发规范.md @@ -8,77 +8,77 @@ 本文为公司Java后端开发的代码规范,规范分如下两级: -- 【强制】:开发者必须遵循的开发规范要求 -- 【推荐】:开发者选择性遵循的开发规范要求 +- ![强制](../img/icon/强制.png) :开发者必须遵循的开发规范要求 +- ![推荐](../img/icon/推荐.png) :开发者选择性遵循的开发规范要求 ## 编程约束 ### 命名 -- 【强制】杜绝完全不规范的缩写,避免望文不知义。 +- ![强制](../img/icon/强制.png) 杜绝完全不规范的缩写,避免望文不知义。 -> 【反例】:AbstractClass缩写成AbsClass;condition缩写成condi;Function缩写成Fu。 +> ![反例](../img/icon/反例.png) :AbstractClass缩写成AbsClass;condition缩写成condi;Function缩写成Fu。 -- 【强制】严禁使用非全世界都知道的拼音命名。 +- ![强制](../img/icon/强制.png) 严禁使用非全世界都知道的拼音命名。 -> 正例:alibaba/youku/hangzhou -> 反例:suanFen【算分】,getGTHTypeCode【获取个体户类型编码】 +> ![正例](../img/icon/正例.png) :alibaba/youku/hangzhou +> ![反例](../img/icon/反例.png) :suanFen【算分】,getGTHTypeCode【获取个体户类型编码】 #### 类命名 -- 【强制】采用大驼峰(UpperCamelCase)命名法,禁止使用数字命名。 +- ![强制](../img/icon/强制.png) 采用大驼峰(UpperCamelCase)命名法,禁止使用数字命名。 -> 【正例】:KeyPair,GlobalConfig -> 【反例】:areaSlice,AreaSlice1,AreaSlice2 +> ![正例](../img/icon/正例.png) :KeyPair,GlobalConfig +> ![反例](../img/icon/反例.png) :areaSlice,AreaSlice1,AreaSlice2 -- 【推荐】采用【名词】,【形容词+名词】的格式进行命名 +- ![推荐](../img/icon/推荐.png) 采用【名词】,【形容词+名词】的格式进行命名 -> 【正例】:SMSSender,GlobalConfig -> 【反例】:SendSMS +> ![正例](../img/icon/正例.png) :SMSSender,GlobalConfig +> ![反例](../img/icon/反例.png) :SendSMS -- 【强制】抽象类必须以Abstract或Base开头(工具类例外:如StringUtils);异常类名明必须以Exception结尾;测试类必须以Test结尾。 +- ![强制](../img/icon/强制.png) 抽象类必须以Abstract或Base开头(工具类例外:如StringUtils);异常类名明必须以Exception结尾;测试类必须以Test结尾。 -- 【强制】接口的参数类必须要以VO或Dto结尾命名;接口与接口之间的传输参数传输类必须以Dto结尾命名。 +- ![强制](../img/icon/强制.png) 接口的参数类必须要以VO或Dto结尾命名;接口与接口之间的传输参数传输类必须以Dto结尾命名。 #### 方法命名 -- 【强制】采用小驼峰(LowerCamelCase)命名法,禁止使用拼音命名 +- ![强制](../img/icon/强制.png) 采用小驼峰(LowerCamelCase)命名法,禁止使用拼音命名 -- 【推荐】方法参数不多于5个,多于5个后改用DTO进行传输。 +- ![推荐](../img/icon/推荐.png) 方法参数不多于5个,多于5个后改用DTO进行传输。 #### 变量命名 -- 【强制】常量与枚举均使用大写+下划线组合的方式命名 +- ![强制](../img/icon/强制.png) 常量与枚举均使用大写+下划线组合的方式命名 -> 【正例】LIMIT_SIZE,ENTITY_TYPE +> ![正例](../img/icon/正例.png) LIMIT_SIZE,ENTITY_TYPE -- 【强制】采用小驼峰(LowerCamelCase)命名法,禁止使用拼音命名 +- ![强制](../img/icon/强制.png) 采用小驼峰(LowerCamelCase)命名法,禁止使用拼音命名 -- 【强制】局部非循环与下标变量,不可使用单字母命名(特殊数学含义例外,如斜截式的斜率a,常数b) +- ![强制](../img/icon/强制.png) 局部非循环与下标变量,不可使用单字母命名(特殊数学含义例外,如斜截式的斜率a,常数b) ## 异常处理 -- 【强制】方法若有显式的RuntimeException异常抛出,必须使用`throws`关键字将其标识到方法上 +- ![强制](../img/icon/强制.png) 方法若有显式的RuntimeException异常抛出,必须使用`throws`关键字将其标识到方法上 -- 【强制】异常的打印均用日志对象的error等级输出 +- ![强制](../img/icon/强制.png) 异常的打印均用日志对象的error等级输出 -- 【强制】IDEA发现的空指针问题必须要处理掉 +- ![强制](../img/icon/强制.png) IDEA发现的空指针问题必须要处理掉 -- 【强制】捕获异常和跑异常必须完全匹配,或者捕获异常是抛异常的父类 +- ![强制](../img/icon/强制.png) 捕获异常和跑异常必须完全匹配,或者捕获异常是抛异常的父类 -- 【强制】若异常被捕获,如果数据需要回滚,一定要注意进行手动回滚 +- ![强制](../img/icon/强制.png) 若异常被捕获,如果数据需要回滚,一定要注意进行手动回滚 ## 日志规约 -- 【强制】日志对象在项目引用了lombok的情况下,请用@SLF4J注解声明 +- ![强制](../img/icon/强制.png) 日志对象在项目引用了lombok的情况下,请用@SLF4J注解声明 -- 【强制】所有日志文件至少保存15天 +- ![强制](../img/icon/强制.png) 所有日志文件至少保存15天 -- 【强制】日志信息拼接使用`{}`占位符,以提高可读性和拼接性能 +- ![强制](../img/icon/强制.png) 日志信息拼接使用`{}`占位符,以提高可读性和拼接性能 -- 【强制】生产环境进制直接使用`System.out`,`System.err`或`e.printStackTrace()`充当日志输出 +- ![强制](../img/icon/强制.png) 生产环境进制直接使用`System.out`,`System.err`或`e.printStackTrace()`充当日志输出 -- 【强制】避免重复打印日志,浪费磁盘空间,务必在日志配置文件中的子logger配置additivity=false +- ![强制](../img/icon/强制.png) 避免重复打印日志,浪费磁盘空间,务必在日志配置文件中的子logger配置additivity=false ```xml @@ -86,8 +86,8 @@ ## 代码结构 -- 【推荐】`{}`代码块嵌套不应超过4层 +- ![推荐](../img/icon/推荐.png) `{}`代码块嵌套不应超过4层 ## 工程结构 -- 【推荐】目录结构com.chinaweal.{项目简称}.{通用配置名/数据源缩写}.{controller/service/entity/mapper} +- ![推荐](../img/icon/推荐.png) 目录结构com.chinaweal.{项目简称}.{通用配置名/数据源缩写}.{controller/service/entity/mapper}