【Java】让你的代码变成模板,统一代码风格
汝之观览,吾之幸也!在一个团队中,可能每个人员的代码风格不一致,例如if,else的分行等,
这可能导致每次在格式化的时候会有冲突,为了避免不一致的代码风格出现的问题,特统一如下配置。
一、idea插件安装
File->Settings->Plugins
1、Alibaba Java Coding Guidelines
作用:阿里巴巴编码规范指南
使用:在类文件中右键->编码规约扫描(快捷键Ctrl + Alt + Shift +J)
可根据显示的Ali-Check、Major、Critical、Blocker 中提示的问题进行修改
2、CamelCase
作用:更改变量的大小写,缩写
使用:快捷键 Shift + Alt + U 可更改名称的大小写与缩写
可在Editor->Camel Case进行配置
二、代码强制规范(列举开发中遇到的常用场景)
编码格式化快捷键 Ctrl + Alt + L
1、常量命名。多个单词需要加下划线分割
2、单词需要拼写正确,不可使用中英文混合
3、避免非必要的变量定义
4、方法或者变量名使用驼峰法命名
5、一个方法不能超过80行,根据单一职责原则拆分方法
6、重复代码需要进行拆分出去
7、字符串拼接需要使用StringBuilder
8、针对返回的数据需要合理定义,如返回map、list等,变量命名就是xxxMap、xxxList
9、HashMap初始化需要指定大小,默认可指定16
10、集合泛型后不加指定类型,如Map<String,Object> testMap = new HashMap<>(16);
11、类名、方法名、内部成员变量、成员变量需要加上注释
12、判断列表大小不用.size()方法,使用.isEmpty()方法
13、BigDicimal初始化不要是Double类型,需为字符串。
如经纬度 BigDecimal lngDecimal = new BigDecimal(String.valueOf(lng));
二、idea配置
File->Settings->Editor
1、CodeStyle设置代码超过120列自动换行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-abPcSM9f-1679999597080)(https://jimmy-blog-images.oss-cn-shanghai.aliyuncs.com/img/java120%E8%A1%8C.png)]
2、CodeStyle->Java->Tabs and Indents 中设置tab为四个空格
3、CodeStyle->Java->Wrapping and Braces中设置if else、try catch的换行
4、CodeStyle->Java->Imports中导入类import不允许导入*
5、File and Code Templates->Files中设置类注释
Files下的Class、Interface、Enum文件
Code下的Junit4 Test Class文件
参考注释:
/**
* <p>Title: ${NAME}</p>
* <p>
* Description:
* </p>
*
* @author Jimmy.Shen
* @version 1.0.0
* @since ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE}
**/
6、Live Templates中设置方法注释
(1)新增myGroup
(2)新增Live Templates
(3)进行配置注释
参考注释:
**
*
* @author JimmyShen
* @date $date$ $time$
$param$
$return$
*/
(4)配置模板对应的文件类型 Define->Java
(5)配置参数值 Edit variables 勾选Skip if defined
date 配置 date()
time 配置 time()
param 配置
groovyScript("def result = '';def params = "${_1}".replaceAll('[\\[|\\]|\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {if(params[i] != '')result+='* @param ' + params[i] + ' ' +((i < params.size() - 1) ? '\r\n ' : '')}; return result == '' ? null : result", methodParameters())
return 配置
groovyScript("def returnType = "${_1}"; def result ='';if(returnType=='null'||returnType=='void'){return;}else{result += '* @return ';cls = returnType.split('<');for(i = 0; i < cls.size(); i++){temp = cls[i].tokenize('.');result += temp[temp.size() - 1] + ((i < cls.size() - 1) ? '<' : '');};return result + ' ';}", methodReturnType());
之后在方法上输入/** + Enter即可生产方法注释