# 代码规范

## 工具安装

### 阿里云编码规范IDEA插件
1. 使用IntelliJ IDEA, 安装`阿里编码规范`插件.
2. 打开insecption,点击`Ali-Check`
![media/编码规范-01.png](media/编码规范-01.png)
3. 按照下图对报警级别进行修改, 然后保存
![media/编码规范-02.png](media/编码规范-02.png)
![media/编码规范-03.png](media/编码规范-03.png)
4. `git commit`之前, 需要对所有修改的代码进行浏览.确认无误,再commit. 不准无脑commit.
![media/编码规范-04.jpg](media/编码规范-04.jpg)


### IDEA-java-style
clone checkstyle项目
将 `SQ-JAVA-IDEA-Style.xml` 导入到IDEA
`preferences -> editor -> code style -> java -> import`

### check style
clone checkstyle项目
把checkstyle中的所有文件,复制到文件夹`/Users/${you-name}/.checkstyle/`下
把pre-commit复制到每个项目的`.git/hooks/`文件夹下

### git commit 规范
执行以下命令安装
```shell
npm install -g commitizen cz-conventional-changelog
echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc
```

使用git提交代码时执行`git cz`, 然后根据提示执行.


## 编码规范
除了阿里编码规范,再补充以下规范

### 代码提交
代码提交前需要格式化整个project
   ![media/编码规范-05.jpg](media/编码规范-05.jpg)

### xxljob
所有的任务都应该有参数,并且在代码中提供默认参数配置, 允许空参运行.
参数尽量使用json格式
在该job内定义内部类作为参数模型

### rabbtimq
发送消息,尽量直接发送对象,而不是json字符串.

反例
```
amqpTemplate.send(exchange, queue, JsonUtils.toJson(object));
```
正例
```
amqpTemplate.convertAndSend(exchange, queue, object);
```

如果发送json, 则消费端需要使用String作为方法的入参,来获得消息体. 如果从Message中获取body,得到的字符串将会多两个引号. 所以不推荐使用这种方式.
如果发送Object, 则消费者直接使用Object作为方法的入参,也可以从Message中获取body再反序列化.
