本文主要介绍Java后端在实际开发当中的一些规范,主要介绍如下几点规范
当然,那些命名规范,注释规范等,我这里就不在一一阐述了,因为那是最基本的规范
规范1:数据库—表的设计要有增量字段
比如user 用户表
规范2:参数传递不要使用Map、JSONObject或者实体类,使用DTO传递
反例:
正例:
使用Map或者JSONObject传递,后面维护的人员不知道传递的参数是什么,还要一一和前端核实,非常麻烦;实体类是用来封装数据的,而不是用来传递数据的,不能将它们两个混着使用,代码会很乱,不知道dto、vo、bo的同学,建议先去了解一下。
规范3:for里不建议写io。io包括:数据库、缓存,文件读写等
对数据库的操作是操作IO的,频繁的操作IO是非常耗性能的,因此代码当中,要杜绝编写循环操作数据库的代码,这里举个例子。
上图,改进后的代码虽然变多了一些,但是,避免了循环操作数据库,特别是当userIdList数据比较多或者数据库当中users表数据量比较大的时候,方式2的速度相比方式1肉眼可见的快。
规范4:判断表达式要使用布尔变量或者封装方法。表达式是变化点。在维护的时候,表达式不知名达意。
反例:
正例:
规范5:采用防御式编程,先判断错误的业务,然后再写正确的业务。防御式编程结构清晰分明:先把所有错误穷举,然后集中处理正确逻辑。
反例:
if(null!=user && user.hasAuth()){
正确逻辑
}
正例:
if(null==user || !user.hasAuth()){
return;
}
正确逻辑
规范6:禁止使用魔法值
反例:
if (users.getType()==1){
}
正例: 定义一个枚举
@AllArgsConstructor
@Getter
public enum UserTypeEnum {
ADMIN(1,"管理员"),
TEACHER(2,"老师"),
STUDENT(3,"学生");
private Integer type;
private String desc;
}
然后再使用
if (users.getType()== UserTypeEnum.ADMIN.getType()){
}
本文的分享就到这里了,当然,实际开发当中还有许许多多的规范,这里,我只是列举了一些初学者最容易不遵守的一些规范。