后端研发代码规则

总则

后端代码按照阿里巴巴Java开发手册终极版v1.3.0.pdf执行,请新同学老同学都阅读下。

Google Java Style Guide

特别需要关注的点如下,如果与上述规范不一致,以下方为准。

推荐Save Actions 插件, 可以在你保存的时候,自动执行一些优化和format。

https://plugins.jetbrains.com/plugin/7642-save-actions

注释

  1. 所有文件指明作者, 复制的类,保留原作者, 复制后大量修改,修改为自己。
1
2
3
4
5
6
7
8
9
/**
* <p>Title: ${NAME}</p>
* <p>Description: ${NAME}</p>
* <p>Company: sanjieke</p>
*
* @author 姓名拼音
* @version 1.0
* @date ${DATE}
*/

具体设置如下

idea配置如下:Preferences->Editor->File and Code Tempaltes->Includes->File Header

  1. 所有的静态变量需要有注释。

  2. 注释应写在被注释对象的上方,而不是后方。

1
2
3
4
5
6
7
8
// 正确的
// 如果abc, 则xxx
if (abc){
}

// 禁止的
if (abc){ // 如果abc, 则xxx
}
  1. interface方法, VO, TO, PARAM, RESULT 使用javadoc的注释方式。 被swagger注解的对象,可以不写注释。
1
2
3
4
5
6
7
8
9
10
11
12
// 正确的
/**
* 年龄
*/
private int age;

@ModelProperty("姓名")
private String name;

// 不建议的
// 年龄
private int age;

命名

  1. restful接口,统一使用中划线命名方法, 如 get-by-id,(老接口不做变动)

  2. server接口统一为 /服务名/xxx/xxx, 如 /tm-object-server/attachment/get-by-key

  3. 字段和方法名称不宜过长, 比如 getAttachmentKeyByUsernameAndCompanyNameWithSort();

  4. interface的名称, 方法名, 参数名都是方法签名的一部分,都可以描述方法, 假设方法本身在AttachmentService下, 那么:

1
AttachmentService.getSortedKey(String username, String companyName);

就已经包含方法的完整用途了, 没必要完全放在方法名称里。

同理, 对于字段名称,如果单词过长,可以做合理缩写,并且保证整份代码里的缩写方式一致,在类开头注释一下即可。

  1. 所有工具类命名为 utils 而非 util,工具类建议定义为 final 类或者 abstract 类,如果定义为 final 类,则构造方法必须使用 private 修饰构造方法,工具类禁止构造实例调用其方法,推荐使用 “类名.方法” 形式调用方法。

  2. 所有枚举类以Enum结尾。

  3. 静态值集合类,以Const 或者 Constant 结尾。

  4. 枚举里的对象,建议使用raw type 而不是包装类, 特别是 int 之类。

  5. VO, TO, DTO 全部大写,不需要写成 Vo, To, Dto。

  6. 字段不建议使用 is 开头,不同的序列化框架对 is 开头的字段处理不一样,可能会导致意外的情况。

格式化

  1. 新的文件和代码必须格式化, Command + Option + L

  2. 旧的文件,如果该文件只有你一个人在修改,建议格式化, 如有多人同时修改,不要执行格式化。

接口

  1. service层必须有接口;

  2. Mybatis 中的 mapper 全部使用 @Resource 注解,不推荐使用 @Autowired 注解;

  3. 新的 Service 层推荐使用 Dao,不建议直接注入 Mapper;