阿里巴巴Java开发手册总结

参考阿里巴巴Java开发手册

以下是从手册中根据自己平时开发经验提出的比较重要且容易被忽略的几点

Mysql数据库设计规约

建表约束

1、[强制]加id,bigint 自增主键

2、[强制]加create_date 和modify_date 创建时间和更新时间

3、[强制]加is_deleted 所有删除都是逻辑删除

4、[强制]is_xxx 到 类成员变量的xxx 去掉is mybatis-generator可以配置

5、[强制]表单与否概念的字段,必须使用is_xxx的方式命名,数据类型是unsigned tinyint

6、[强制]主键索引名为pk_字段名;唯一索引名为uk_字段名;普通索引名为idx_字段名

7、[强制]小数类型为decimal,禁止使用float和double

8、[推荐]表的命名最好遵循“业务名称_表的作用”

索引规则

1、[强制]业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引

2、[强制]超过三个表禁止用join,最好不要用join,分开查询加上缓存效果会更好

3、[强制]页面搜索严禁左模糊或者全模糊

4、[推荐]建组合索引的时候,区分度最高的在最左边 如:idx_companyId_isDeleted

ORM映射

1、[参考]@Transactional 事务不要滥用

Java编程规约

OOP规约

1、[强制]所有DO类必写toString方法,IED中可以自动生成,如果继承了另一份DO类,加上super.toString()

2、[强制]使用Objects.equals() 判断值类型(java.util.Objects#equals), 反例:object.equals(“test”)

3、[强制]BigDecimal 来保存金额等精度较高的数据,并且禁止用 == 做判断

4、[强制]所有整型包装类对象之间的值比较,全部使用equals方法比较 Integer Long等

5、[推荐]循环体内 使用StringBuilder 的append方法进行扩展

6、[强制]所有的常量名都应该大写,格式如BACKEND_URL

7、[推荐]创建constant包,把常量按照类别放入此目录下,避免一股脑放在一个类中,可读性差。

集合规约

1、[强制]不要在foreach循环中进行元素的remove/add 操作。请使用Iterator

SpringBoot

1、[强制]controller 封装统一返回类和返回状态码,如Result/ResultBean 避免使用Map,Json。

2、[强制]封装分页请求和返回基类,如BasePagingPara、BasePagingResult。

应用分层

应用分层

1、Controller/Web层:访问控制进行转发,各类基本参数校验,xxxController

2、Service层:相对具体的业务逻辑服务层,xxxService xxxServiceImpl

3、Manager层:通用业务处理层(这一层经常被忽略)

1)对第三方平台封装的层,预处理返回结果及转化异常信息
2)对Service层通用能力的下沉,如缓存方案、中间件通用处理
3)与DAO层交互,对多个DAO的组合复用

4、DAO层:数据访问层,与底层MySQL数据库交互

异常捕获和日志

在Service/Manager层捕获异常并打印保存日志

分层领域模型说明

1、DO(Date Object):此对象与数据库表结构一一对应,通过DAO层向上传输数据源对象。

2、DTO(Date Transfer Object):数据传输对象,Service或Manager向外传输的对象。

3、BO(Business Object):业务对象,由Service层输出的封装业务逻辑的对象。

4、Query:数据查询对象,各层接收上层的查询请求。注意超过2个参数的查询封装,禁止使用Map、Json来传输。

5、VO(View Object):显示层对象,通常是 Web 向模板渲染引擎层传输的对象。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章