-
2020-12-26...六、工程结构 (一)應用分層 1. 【推荐】根据业务架构实践,结合业界分层规范与流行技术框架分析,推荐分层结构如图所示,默认上层依赖于下层,箭头关系表示可直接依赖,如:开放API层可以依赖于Web层(Controller层),也可以直接依赖于Service层,依此类推:"... 207
-
2020-12-26...(四) ORM映射 1. 【强制】在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明。 说明:1)增加查询分析器解析成本。2)增减字段容易与resultMap配置不一致。3)无用字段增加网络消耗,尤其是text类型的字段。 2. 【强制】POJO类的布尔属性不能加is,而数... 182
-
2020-12-26...五、(二) MySQL索引规约 1. 【强制】业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引。 说明:不要以为唯一索引影响了insert速度,这个速度损耗可以忽略,但提高查找速度是明显的;另外,即使在应用层做了非常完善的校验控制,只要没有唯一索引,根据墨菲定律,必然有脏数据产生。2.... 212
-
2020-12-26...四、安全规约
1. 【强制】隶属于用户个人的页面或者功能必须进行权限控制校验。 说明:防止没有做水平权限校验就可随意访问、修改、删除别人的数据,比如查看他人的私信内容。2. 【强制】用户敏感数据禁止直接展示,必须对展示数据进行脱敏。 说明:中国大陆个人手机号码显示:1... 196 -
2020-12-26...三、单元测试 1. 【强制】好的单元测试必须遵守AIR原则。 说明:单元测试在线上运行时,感觉像空气(AIR)一样感觉不到,但在测试质量的保障上,却是非常关键的。好的单元测试宏观上来说,具有自动化、独立性、可重复执行的特点。 ⚫ A:Automatic(自动化) ⚫ I:Ind... 190
-
2020-12-26... (三) 日志规约 1. 【强制】应用中不可直接使用日志系统(Log4j、Logback)中的API,而应依赖使用日志框架 (SLF4J、JCL--Jakarta Commons Logging)中的API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。说明:日志框架(SLF4J、JCL--Jaka... 201
-
-
2020-12-26...二、(二)異常處理 1. 【强制】Java 类库中定义的可以通过预检查方式规避的RuntimeException异常不应该通过catch 的方式来处理,比如:NullPointerException,IndexOutOfBoundsException等等。 说明:无法通过预检查的异常除外,比如,在... 207
-
2020-12-26...(十一)其他
1. 【强制】在使用正则表达式时,利用好其预编译功能,可以有效加快正则匹配速度。
说明:不要在方法体内定义:Pattern pattern = Pattern.compile(“规则”);
2. 【强制】避免用Apache Beanutils进行属性的copy。&nb... 193 -
2020-12-26...(十) 前后端规约 1. 【强制】前后端交互的API,需要明确协议、域名、路径、请求方法、请求内容、状态码、响应体。 说明:1) 协议:生产环境必须使用HTTPS。 2) 路径:每一个API需对应一个路径,表示API具体的请求地址: a) 代表一种资源,只能为名词,推荐使用复数,不能为动词,请求方法... 248
-
2020-12-26...(九) 注释规约
1. 【强制】类、类属性、类方法的注释必须使用Javadoc规范,使用/**内容*/格式,不得使用// xxx方式。
说明:在IDE编辑窗口中,Javadoc方式会提示相关注释,生成Javadoc可以正确输出相应注释;在IDE中,工程调用方法时,不进入方法即可悬浮提示方法、参数、返回... 198 -
2020-12-26...(八)控制語句
1. 【强制】在一个switch块内,每个case要么通过continue/break/return等来终止,要么注释说明程序将继续执行到哪一个case为止;在一个switch块内,都必须包含一个default语句并且放在最后,即使它什么代码也没有。 说明:注意break是退出switch语句... 208 -
2020-12-24...(七) 并发处理 1. 【强制】获取单例对象需要保证线程安全,其中的方法也要保证线程安全。
说明:资源驱动类、工具类、单例工厂类都需要注意。 2. 【强制】创建线程或线程池时请指定有意义的线程名称,方便出错时回溯。 正例:自定义线程工厂,并且根据外部特征进行分组,比如,来自同一机房的调用,把机房编号... 248 -
-
2020-12-24...(六) 集合处理-2 8. 【强制】在subList场景中,高度注意对父集合元素的增加或删除,均会导致子列表的遍历、增加、删除产生ConcurrentModificationException 异常。 9. 【强制】使用集合转数组的方法,必须使用集合的toArray(T[] array),传入的是类型完全一致... 199
-
2020-12-24...(五) 日期时间 1. 【强制】日期格式化时,传入pattern中表示年份统一使用小写的y。 说明:日期格式化时,yyyy表示当天所在的年,而大写的YYYY代表是week in which year(JDK7之后引入的概念),意思是当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,返回的YYYY就是下一年... 196
-
2020-12-24...13. 关于基本数据类型与包装数据类型的使用标准如下: 1) 【强制】所有的POJO类属性必须使用包装数据类型。 2) 【强制】RPC方法的返回值和参数必须使用包装数据类型。 3) 【推荐】所有的局部变量使用基本数据类型。 说明:POJO类属性没有初值是提醒使用者在需要使用时,必... 190
-
2020-12-24...(四) OOP规约 1. 【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。2. 【强制】所有的覆写方法,必须加@Override注解。 说明:getObject()与get0bject()的问题。一个是字母的O,一个是数字的0,加@Override可... 202
-
2020-12-24...(二) 常量定义 1. 【强制】不允许任何魔法值(即未经预先定义的常量)直接出现在代码中。
反例:// 本例中,开发者A定义了缓存的key,然后开发者B使用缓存时少了下划线,即key是"Id#taobao"+tradeId,导致出现故障String key = "Id#taobao_" + tradeId;c... 209 -
2020-12-23...一、 编程规约(一) 命名风格1. 【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。
反例:_name / __name / $name / name_ / name$ / name__2. 【强制】所有编程相关的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。 ... 218 -
-
2020-12-23...[編按: 轉載于 github.com/aliaba/p3c, 2020-08-01.] 前言 《Java开发手册》是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,公开到业界后,众多社区开发者踊跃参与,共同打磨完善,系统化地整理成册,当前的版本是嵩山版。现代软件行业的高速发展对... 232
-
-
本页Url:
-
2024-12-29-04:33 GMT . 添加到桌面浏览更方便.
-