Vuesion Theme
首先推荐是一款皮肤,每天对着看IDEA,默认的皮肤黑白两色,白色太刺眼,黑色的有点太黑了,代码高亮也不好看,长时间难免看着有点审美疲劳。
看代码主题效果:
Atom Material ICons
第二款推荐的是一款ICON插件,其实这个Icon虽然不难看,但也没觉得多好看。那为什么还要特意推荐??
因为这款ICon插件附加了一个buff。
部分效果如下:
这个icon插件附带的buff。idea在macOs下,无论是用2018款的Macbook pro还是现在的Macbook pro m1版本,总感觉在拖动滚动条或是鼠标中键滚屏时有点卡顿,并不是电脑性能的问题,在网上看到有其他小伙伴也遇到了这种情况。应该是idea对MacOs系统的优化问题。
尝试过增大Idea的jvm缓存,尝试过优化参数。都无果,后来偶然一次机会在某个论坛上看到有一个人说,装了这个Icon插件之后就变的丝滑无比了,但不知道为啥。抱着怀疑的态度装了下,卧槽,瞬间丝滑了。虽然不懂这是为什么,但是解决问题了之后这个Icon插件就变成必备插件了。如果有小伙伴遇到相同的问题的话,那么请尝试。
File Expander
有了这个插件,有些小伙伴平时用的Jad工具就可以扔了,它能在Idea里直接打开Jar包,并且反编译代码查看。甚至于能打开tar.gz,zip等压缩格式。
这里补充下,项目里之所以不需要装插件就能看jar包里的代码,是因为jar在classpath内。如果单独打开一个jar包,不装插件是看不了的。
GitToolBox
他能在项目上提示还有多少文件没提交,远程还有多少文件没更新下来。还能在每一行代码上提示上次提交的时间。查版本提交问题的时候尤其方便。
Maven Helper
这个应该是所有使用Idea开发者的标配插件了吧。
经常使用到的功能便是可视化依赖书,可以清晰的知道,哪个Jar包传递依赖了什么,哪个jar包什么版本和什么版本冲突了。
排查Jar包依赖等问题用这个简直是神器。这个插件也提供了一些其他的快捷命令,右键直接唤起maven命令,颇为方便。
Translation
源码中很多注解都是英文,有时候看着有点费劲。这款翻译插件基本上与Idea一体化,从集成度和方便程度来说,可以吊打其他的第三方翻译软件了。不需要切换窗口,直接一个快捷键就可以翻译整段文本了。
关键是这个插件的翻译引擎可以与多个翻译接口集成对接,支持google翻译,有道翻译,百度翻译,阿里翻译。实时进行精准快速的翻译,自动识别语言。在阅读源码里的英文时理解的更加透彻。
arthas idea
Arthas是阿里开源的一款强大的java在线诊断工具,做java开发的小伙伴一定很熟悉。
这个工具几乎已经成为诊断线上java应用的必备工具了。
但是每次需要输入很长一段命令,有些命令遗忘的话,还要去翻看Arthas的命令文档,然后还要复制代码中类或方法的全路径,很是不方便。而这款arthas的插件就可以完全摆脱这些苦恼。生产力大大提升。
使用起来非常方便,进入代码片段,选择要诊断的类或者方法上面,右击打开Arthas命令,选择一项,即可自动生成命令,省去敲命令的时间。
Search In Repository
平时如果要依赖一个第三方jar包,但是不知道它的maven/gradle的坐标。该怎么做?
搓点的做法基本上就是baidu了,稍微高级点的就是到中央仓库去查下,最新版本的坐标是什么。然后复制下来,贴到pom里去。
这款插件,就无需来回跳转,直接把中央仓库的查找集成到了Idea里面。只需要打开这款插件,输入jar包的名字或者gav关键字,就能查到到这个jar包所有的版本,然后可以直接复制gav坐标。方便又快捷,干净又卫生!
VisualGC
不知道大家去诊断JVM堆栈用什么工具呢,是不是大部分都是用jdk的原生工具呢。
这里推荐大家一个Idea堆栈的可视化工具,和Idea深度集成。直接显示所有进程,双击即可打开JVM的堆栈可视化界面。堆栈和垃圾收集情况一目了然!
Zoolytic
一款zookeeper节点的查看分析插件。其实第三方也有一些zk的节点信息查看工具,但是都不够方便,直到发现了这款插件。
idea里面直接可以看zookeeper的节点信息,非常方便。
MetricsReloaded 代码复杂度检查插件
MetricsReloaded 是一个计算代码复杂度即圈复杂度的 Jetbrain 开源开发的第三方插件。
如上图所示,选择 Complexity metrics, 执行分析结果如下图所示:
如上图所示界面中的红颜色部分,代表需要去重构优化的,点击当前行,会定位到源代码,然后针对性去优化函数。上图中,可以分析出方法的圈复杂度、类的圈复杂度、包的圈复杂度、模块的圈复杂度、工程的圈复杂度。
关于代码复杂度,有个维度的衡量,在这里需要普及下软件复杂度的相关知识:基本复杂度(Essential Complexity (ev(G))、模块设计复杂度(Module Design Complexity (iv(G)))、Cyclomatic Complexity (v(G)) 圈复杂度。
(1)圈复杂度(Cyclomatic Complexity (v(G)) )
概念:圈复杂度用来衡量一个模块的复杂程度。数量上表现为独立路径的条数,即合理的预防错误所需测试的最少路径条数,圈复杂度大说明程序代码可能质量低且难于测试和维护,经验表明,程序的可能错误和高的圈复杂度有着很大关系。
计算方法:一个模块控制流图有e条边,n个节点,它的圈复杂度v(G) = e - n + 2。
(2)基本复杂度(Essential Complexity (ev(G)) )
概念:基本复杂度用来衡量程序非结构化程度,非结构成分降低了程序的质量,增加了代码的维护难度,使程序难于理解。因此,基本复杂度高意味着非结构化程度高,难以模块化和维护。实际上,消除了一个错误有时会引起其他的错误。
计算方法:将模块控制流图中的结构化部分简化成节点,计算简化后控制流图的圈复杂度就是基本复杂度。
(3)模块设计复杂度(Module Design Complexity (iv(G)) )
概念:模块设计复杂度用来衡量模块之间的调用关系。软件模块设计复杂度高意味模块耦合度高,这将导致模块难于隔离、维护和复用。模块设计复杂度是从模块流程图中移去那些不包含调用子模块的判定和循环结构后得出的圈复杂度,因此模块设计复杂度不能大于圈复杂度,通常是远小于圈复杂度。
计算方法:从模块控制流图中移去那些不包含调用子模块的判定和循环结构后得到的圈复杂度。模块设计复杂度通常远小于圈复杂度。