写在最前面的话:
插件仁者见仁智者见智,适合的才是最好的。
还有,开启过多插件时,idea加载会慢,请合理控制数量。
现在idea插件的帖子已经很多了,这里主要指个路。
本文模式为【给出介绍idea插件的网址,然后对该网址中的部分插件进行评价】。
注:原网址包含,而本文未出现的插件,原因大多是笔者没有用过,故不做评论;也有部分插件没有介绍的必要(比如主题美化插件Material Theme UI)
程序员常用工具总结
Alibaba Java Coding Guidelines
必装。阿里代码规范不解释。
Codota
推荐。加强智能代码提示,可以搜索某方法的使用样例(点击方法名,然后ctrl+shift+o)。
Auto filling Java call arguments
可装。自动拷贝同名参数到调用的方法中,节约时间。
GenerateO2O、GenerateAllSetter Lombok
他推荐的是生成,而Lombok一个@Data注解,直接解决所有的get、set、toString等等。具体请看官方样例,看下面的样例也可以,我挑选了两个有代表性的,@EqualsAndHashCode和@Data。
【@EqualsAndHashCode注解——使用Lombok的代码】
@EqualsAndHashCode(callSuper=true,exclude={"address","city","state","zip"})
public class Person extends SentientBeing {
enum Gender { Male, Female }
@NonNull private String name;
@NonNull private Gender gender;
private String ssn;
private String address;
private String city;
private String state;
private String zip;
}
【@EqualsAndHashCode注解——等价的代码】
public class Person extends SentientBeing {
enum Gender {
/*public static final*/ Male /* = new Gender() */,
/*public static final*/ Female /* = new Gender() */;
}
@NonNull
private String name;
@NonNull
private Gender gender;
private String ssn;
private String address;
private String city;
private String state;
private String zip;
@java.lang.Override
public boolean equals(final java.lang.Object o) {
if (o == this) return true;
if (o == null) return false;
if (o.getClass() != this.getClass()) return false;
if (!super.equals(o)) return false;
final Person other = (Person)o;
if (this.name == null ? other.name != null : !this.name.equals(other.name)) return false;
if (this.gender == null ? other.gender != null : !this.gender.equals(other.gender)) return false;
if (this.ssn == null ? other.ssn != null : !this.ssn.equals(other.ssn)) return false;
return true;
}
@java.lang.Override
public int hashCode() {
final int PRIME = 31;
int result = 1;
result = result * PRIME + super.hashCode();
result = result * PRIME + (this.name == null ? 0 : this.name.hashCode());
result = result * PRIME + (this.gender == null ? 0 : this.gender.hashCode());
result = result * PRIME + (this.ssn == null ? 0 : this.ssn.hashCode());
return result;
}
}
【@Data注解——使用Lombok的代码】
@Data(staticConstructor="of")
public class Company {
private final Person founder;
private String name;
private List<Person> employees;
}
【@Data注解——等价的代码】
public class Company {
private final Person founder;
private String name;
private List<Person> employees;
private Company(final Person founder) {
this.founder = founder;
}
public static Company of(final Person founder) {
return new Company(founder);
}
public Person getFounder() {
return founder;
}
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
public List<Person> getEmployees() {
return employees;
}
public void setEmployees(final List<Person> employees) {
this.employees = employees;
}
@java.lang.Override
public boolean equals(final java.lang.Object o) {
if (o == this) return true;
if (o == null) return false;
if (o.getClass() != this.getClass()) return false;
final Company other = (Company)o;
if (this.founder == null ? other.founder != null : !this.founder.equals(other.founder)) return false;
if (this.name == null ? other.name != null : !this.name.equals(other.name)) return false;
if (this.employees == null ? other.employees != null : !this.employees.equals(other.employees)) return false;
return true;
}
@java.lang.Override
public int hashCode() {
final int PRIME = 31;
int result = 1;
result = result * PRIME + (this.founder == null ? 0 : this.founder.hashCode());
result = result * PRIME + (this.name == null ? 0 : this.name.hashCode());
result = result * PRIME + (this.employees == null ? 0 : this.employees.hashCode());
return result;
}
@java.lang.Override
public java.lang.String toString() {
return "Company(founder=" + founder + ", name=" + name + ", employees=" + employees + ")";
}
}
毋庸置疑,Lombok非常强大。但是也有缺点,也有人不推荐。请移步Lombok介绍、使用方法和总结。该文章详细讲述了Lombok,且评论区的意见两极分化挺严重的(笑),有参考价值。
个人比较推荐该插件,毕竟代码简洁了许多。还是写在最开始的那句话,仁者见仁智者见智,你觉得好就用,觉得不好就不用,没必要批判另一方。
Rainbow Brackets
必装。如果只是单纯地“彩虹括号”功能,那也许没什么。但是它除了配对括号相同颜色这个功能,还实现了选中区域代码高亮,这就很有用了。
ctrl+鼠标右击 可以将指定区域高亮。
alt+鼠标右击可以将其他区域变暗。
以上都在Rainbow Brackets的github有动图展示。
Maven Helper
必装。解决依赖问题。
SequenceDiagram
必装。看别人代码没有这个能行???
JRebel
推荐。热更新,用SpringBoot的话一定要装这个。
使用方法参照如下几篇文章。
安装流程:Intellij热部署插件JRebel
破解,生成GUID:JRebel 破解最简单的使用
项目部署:Idea+JRebel远程热部署Spring Boot项目
Translate Translation
必装。翻译文档,因为文档前面有 * ,所以翻译的时候很烦。右击,选择Translate Documentation即可翻译Java Doc。Translate和Translation都具有该功能。
而Translate主要是输入框太小了,不方便。使用Translation的话,ctrl+shift+o呼出翻译框,输进去以后右边会自动显示翻译。中文会自动翻译英文,英文自动翻译中文,很方便。
Free Mybatis Plugin
可装。Mapper 接口与 xml 的相互跳转, Mybatis Generator 功能等。
IntelliJ Idea 常用11款插件(提高开发效率),附优秀主题插件
Mybatis Log Plugin
推荐。直接得到经过处理(即将“?”替换为具体的值)的完整sql语句。
原文下面有破解链接。
Grep Console
可装。可以设置不同级别log的字体颜色和背景色。
CodeGlance
必装。代码缩略图什么的都无所谓,主要是拖动方便(本末倒置
aiXcode
可装。但是代码格式化其实有很多了,它跟codota二选一就行,还能加快启动速度。
个人还是推荐codota。
因为idea本身智能推荐就已经很强了,codota用的很好,而aiXcode的智能提示感觉有些摸不到头脑。
以上仅代表个人观点,自己下载下来试试看就知道了。