代码规范

1.安装alibaba的代码规范插件
插件名字叫做Alibaba Java Coding Guidelines
代码规范
代码规范
使用方法为以上图片所示

2.不可出现魔法值
魔法值是在set或get方法中直接设置值,例如新增的时候is_delete为0
setIsDelete(0);
在遇到这样的情况的时候,使用常量类或者是枚举类
在常量中定义,变量名都可以大写,多个单词使用_连接
public static final int NOT_DELETE = 0;
在枚举中定义,变量名都大写
NOT_DELETE(0,0);

3.方法名称命名
需要显著,最好是能够使用谷歌翻译或者是百度翻译出来 如果太长可以进行缩写
方法的名称如果不会拼写,请使用谷歌翻译或者百度翻译,同时进行中译英,英译中的操作。如果单词数少且能表示方法的含义,方法的名称没有必要进行缩写。方法的名称一般可以为6-7个单词
例如要查询已删除数据
selectClassContainIsDeleteById(Long id);
通过id查询未删除的数据
selectClassById(Long id);

4.代码分层
controller层:
接口入口,只可以进行参数校验等操作,不可进行业务逻辑
可以调用自己模块的service、Manager以及公共的commonManager
manager层:
自己模块的manager:进行业务逻辑操作,可以调用其他模块的service
公共模块的manager:模块调用的公共方法
service层:
自己模块只能调用自己表的操作
mapper层:
dao层,连接数据库
xml层:
sql语句

5.关于方法重构的问题:

  • 在可以复用的情况下
  • 方法的行数太多

在遇到代码函数特别多的时候,但是因为逻辑的额连贯性,以及方法中变量的延续性(方法中的局部变量,在方法后边的逻辑需要引用),该方法不能进行拆开,
如果一个方法中代码行数特别少,一定的程度上是不需要进行方法隔离的。

6.在初始化对象的时候,需要设置值,请写好注释说明,此处是初始值对象

7.新建类的时候,请写上作者,时间,版本以及该类的作用,可以在setting中的File and Code Templates中设置
代码规范
8.在类中定义属性,定义为私有属性,为了防止其他地方进行引用

9.尽量减少循环嵌套,不要在if中使用多层if,如果是这样,请写成
if (!condition){
}

10.在每个包建一个package-info.java。说明该包中写的是什么内容

11.方法与方法之引用需要放在一块,内容更加清晰

12.方法上面必须写
@author,@param,@return,@throws,@deprecated
@author: 作者名称
@param: 参数名称
@return: 返回的内容
@throws: 抛的异常
@deprecated: 过期版本

13.关于事务的使用
@Transactional注解,如果在一个方法上有一个@Transactional,然后该方法中也有方法,这个方法里的方法不在需要@Transactional注解,否则会出现类似于死锁的状态。
原因是因为第一个@Transactional进行了事务,然后再使用内嵌的方法,由于内嵌的方法上有@Transactional注解,导致方法无法正常进行下去。
1、@Transactional 应用在非 public 修饰的方法上
2、@Transactional 注解属性 propagation 设置错误
3、@Transactional 注解属性 rollbackFor 设置错误
4、同一个类中方法调用,导致@Transactional失效
5、异常被catch捕获导致@Transactional失效6、数据库引擎不支持事务

14.mybatis-plus的使用
第一个容易导致is_delete=1变为is_delete=0
return this.update(bdClassTime, wrapper);
第二个是根据id进行更新 使用是源代码进行拼接的sql语句。mybatis-plus可以自己查询到主键为那个字段,通过po对象中的属性上是否有@TableId(value=“id”, type=IdType.AUTO)注解
return this.updateById(bdClassTime);