使用IDEA分析类的关系

作者: heyikan | 来源:发表于2017-03-20 22:19 被阅读474次

    2017/3/20 | 周一 | 雨


    今天在分析线程池的相关类的时候,偶然发现了IDEA类图分析的功能,用起来非常方便。

    打开Diagrams窗口

    任意选中一个类,使用快捷键Shift + Ctrl + Alt + U打开:

    Paste_Image.png

    这个图默认显示的是刚才选中的类,而且没有显示任何其他信息。顶部的工具栏,可以筛选显示的元素,比如选中第三个选项,可以显示类的方法:

    Paste_Image.png

    其他的选项可以自己去看看,不再一一介绍了。

    添加类

    首先把这个类从图中删除:在图中选中类,按Delete键删除。

    删除对象.gif

    然后添加你敢兴趣的类。你可以直接把类拖进来:

    添加对象-拖放.gif

    也可以通过空格+类的名字来添加:

    添加对象-搜索.gif

    注意
    2017.1版本的出现了一个bug,无法通过这种方式添加类。bug已被提交到这里,目前尚未被修复。

    如果你添加的类和已有的类之间有继承关系,那么这个关系会被自动标识出来:

    Paste_Image.png

    按下Alt再移动鼠标,会有放大镜的效果:

    Paste_Image.png

    在这个基础上,去探索其他的功能吧。比如可以从类图跳到具体方法的源代码位置,比如可以过滤显示public或者其他级别的元素。

    为什么说这个工具好用?

    有些时候我们需要分析特定的几个类,现在只需要找到这些类,把它拖进来就好了。

    Paste_Image.png

    比如我在分析线程池的时候,用的是上图。左侧是任务的接口,中间是线程池的继承结构,右侧是任务的执行结果。Executors是一个工具类,用于创建线程池的实例。这样就很清晰了。我一般使用截图工具将它截图到onenote上,然后在附近添加注释。

    Paste_Image.png

    这个是我在分析阻塞队列时用的图。

    它让我们的焦点得以集中。快速、便捷、集中,想想看以前我要分析特定的几个类的时候,都是要自己查API,画类图的。

    它还有哪些缺点

    它可能显示不完整

    Paste_Image.png

    比如上图中最下面的几个方法,都没有显示完整,而且不可以手动调整大小,所以目前还没有解决办法。

    它没有实现高度定制

    只把我想关注的类集中起来,这个是做到了。但是有些时候我只想关注其中某一个类的方法,却无法做到,要么所有类的方法都显示,要么都不显示。有些时候我还想只关注某个类的部分方法,也做不到,只能根据访问控制符进行简单过滤。

    无法主动添加其他图形

    这个要求可能高了点,因为这是对于一个画图工具的要求。比如上文中提到的线程池的分析图,我很想画几个框把不同角色的类框起来,但是这里做不到。

    相关文章

      网友评论

        本文标题:使用IDEA分析类的关系

        本文链接:https://www.haomeiwen.com/subject/xuwinttx.html