从一开始的Eclipse
,到MyEclipse
,最后到idea
,大致是我使用Java IDE的一个轨迹,而现在基本上是只有在使用idea
进行Java开发了。作为一个IDE,无论是界面,还是代码提示和修改,亦或是对各种框架和工具的支持,方方面面,它都带给我特别多惊喜。故而在这里总结记录分享一点在使用idea
时用到的特性和技巧。
区域折叠(Region Folding)
上学的时候接触过C#,它有三个特性给我留下了深刻印象。一个是Accessor
,一个是patial class
,还有一个就是#region
指令。
region
指令给出一段代码的描述,并且使我们可以在IDE中把它折叠起来!多棒的特性啊,提升代码可读性,让代码变得清晰美观,方便进行开发。
到了现在,工作中主要开发语言是Java
,我经常遇到这样一些情况:
简单对象
根据业务的不同,开发过程中可能出现
POJO
,Entity
,PO
,VO
,DTO
等各种类。不管这些词的严格定义是什么,他们一定都是用于承载数据的。所以这个特点决定了它可能会拥有大量的属性,所以同时会有大量的getter/setter
,可能也会有很多不同的constructor
。此外还会有重载的toString
,hashCode
和equals
函数。这些函数在完成以后,几乎很少再去浏览他们,浏览最多的还是类的属性,注解以及一些自定义的转换函数。工具类
一个工具类中,可能会有大量函数。而很多函数功能/目的/类型一样。就比如一个
StringUtils
里,可能会有一些函数是用来进行字符串替换的。而另一部分可能是用来处理不同字符集的。复杂函数
不管怎么强调
单一职责
,面对一些复杂的业务场景,或者复杂的算法计算时,一个函数还是可能会变得非常冗长,导致代码可读性和开发效率降低。
而区域折叠,则可以解决这些问题!
在idea
中,选中一段代码,右键->Folding
->Folding Selection/Remove region
,这段代码就被折叠起来了。和其他被折叠的函数和类一样,鼠标悬浮就能看到折叠的内容。并且idea在行号出添加了一个小+
按钮,之后可以通过按钮来进行代码折叠/展开。
这个操作的默认快捷键应该是Ctrl-.
。
链式Setter
记得第一次接触到链式调用,是在大学的Android
课。犹记得是一段属性设置的代码,直接inst.afoo(a).bfoo(b).cfoo(c1, c2)...
就完成了,让我只能用一个字描述,那就是爽!
而idea
能够直接生成这样的setter
:
如上图,在Template
中直接选择Builder
即可。对于上面的这几个属性,生成的setter
如下:
1 | public HeatTemp setLng(float lng) { |
这样我们就可以一set
到底了。
自定义Getter/Setter
虽然idea
自带了链式setter
的模板,但是还是不能让我满意。
一直我都不太喜欢所谓的JavaBeanName
规范。所以,在一些不会引起冲突和错误的地方,我会优先使用自己习惯的命名方式:
1 | // in class A |
还好,idea
在很多地方能够自定义模板,这也包括了getter/setter
的生成。
在生成getter/setter
时,点击Template
后方按钮,可以进行自定义模板。
我的Getter
模板如下:
1 | #if($field.modifierStatic) |
Setter
模板如下:
1 | #set($paramName = $helper.getParamName($field, $project)) |
生成的代码大致是这个样子:
1 | public class Sample { |