一步一步打造属于你的最强神兵Idea
很久很久以前,那时候还是eclipse的天下,还有一款收费的MyEclipse,直到IntelliJ IDEA横空出世,JetBrains这家捷克的软件开发公司是真的懂程序员。
不敢说eclipse已经走向没落,至少IntelliJ IDEA已经占据了半壁江山。
其实eclipse也很好用,当年我也装了很多插件,自己创建了很多代码模板,还替换了一个jar包,代码提示可以和idea一样,写起代码来,比idea一点也不差,不过后来还是转向了idea的阵营。
鲜花少许。
我是一个喜欢鼓捣工具的人,可以说我的idea是最好用的,就是这么不谦虚
接下来让我带你一起打造属于你的最强神兵Idea。
快捷键我就不说了,每个人的习惯不同,而且Windows系统和Mac系统也不一样。我的大部分快捷键使用的是eclipse的快捷键
首先是代码模板,又叫 Live Templates

在这里我们可以自定义代码模板,其实很多人都知道,我自定义了几十个,这里说几个我最喜欢的,也是最常用的。
日志相关
写代码避免不了打印日志,可是写日志真的浪费时间啊,而且日志还不能随便写,还要便于追踪。
我使用的是 类名_方法名_变量名的方式来打印日志。可是这样写下来,能把人累死。
所以我创建了一个log1的代码模板,别忘了配置为Java程序使用的,嫌麻烦就选择所有

log.info("$ClassName$_$MethodName$_$VAR1$:{}", $VAR1$);
$ClassName这种东西是一个变量,我们还要告诉idea这代表什么意思。
我们点击 Edit variables,可以编辑变量信息。 
可以看到里面有很多表达式

这里讲一下这三个
className()看名字就知道,就是类名methodName()看名字也知道,这个是方法名variableOfType("")这个是让idea自动推断,自动填入最适合的。

只需要输入log1就全好了,最后那个是可以根据提示选择的。
为什么叫log1?
因为这是一个变量的,日志一般都会打好几个变量,所以我有log1-log5,最多可以支持5个变量。还有这个日志的级别是info,我还创建了一个log1e,用来打印error级别的。
断言相关
Spring中断言是真的好用,很多时候我们会使用Assert.isTrue(),如果表达式里面的数据可以自动填充就好了,你想到了什么?
variableOfType("")这个是让idea自动推断,自动填入最适合的。
我定义了一个ass1。 Assert.isTrue($VAR$.size() == 1, "$END$!"); 主要用户判断list的大小。我们要配置一下$VAR$为variableOfType(""),$END$不需要配置参数,它代表的意思是,最后光标的位置,这里我们可以写一些异常信息。

- 还有
assd,要求大于0
Assert.isTrue($VAR$.size() > 0, "$END$!"); assle,要求小于0
Assert.isTrue($VAR$.size() <= 0, "$END$!");assn,要求不能为空
Assert.isTrue($VAR$ != null, "$END$!");assnn,要求为空
Assert.isTrue($VAR$ == null, "$END$!");asss,要求字符串不为空
Assert.isTrue(StringUtils.isNotBlank($VAR$), "$END$!");asst,要求表达式为true
Assert.isTrue($VAR$, "$END$!");
可以看出大部分场景我都配置了模板,没办法,就是懒啊
接口相关
因为使用了Swagger,每次写接口都要写一堆注解,我配置了两个模板pm和gm。
先看gm
gm就是GET方式请求的接口。
@ApiOperation("$VAR2$")
@ApiImplicitParams({
@ApiImplicitParam(name = "", value = "", required = true),
})
@GetMapping(value = "/$VAR1$", name = "$VAR2$")
public HttpResult $VAR1$(){ $END$ return HttpResult.success(); }
这里的$VAR1$ 和 $VAR2$也是variableOfType

请求路径和方法名一样,ApiOperation的value和GetMapping的name也一样。

然后是pm
pm其实一样的,只不过GetMapping换成了PostMapping
@ApiOperation("$VAR2$")
@ApiImplicitParams({
@ApiImplicitParam(name = "", value = "", required = true),
})
@PostMapping(value = "/$VAR1$", name = "$VAR2$")
public HttpResult $VAR1$() { $END$ return HttpResult.success(); }
最后一个:下划线转驼峰命名
很多时候数据库新增了一个字段,可是是使用下划线间隔命名的,我们复制到类里,手动一个个改,很麻烦。
所以我创建了一个模板xscs,唯一的缺陷是转换后,无法删除之前的,要手动删除之前的,我查了模板里面的变量是不支持删除的。
$SELECTION$$END$$VAR$
变量配置 
$SELECTION$表示是要对选择的字符串转换。

光标前面那一串是我手动删除的
总结
今天先到这里,代码模板是很有用的东西,可以帮我们少做很多重复的工作,如果有一块代码,你经常写,差别又不大,你可以试着把它配置为代码模板。
欢迎大家关注我的公众号,共同学习,一起进步。加油

本文使用 tech.souyunku.com 排版