2017/3/20 | 周一 | 雨
今天在分析線程池的相關類的時候,偶然發現了IDEA類圖分析的功能,用起來非常方便。
打開Diagrams窗口
任意選中一個類,使用快捷鍵Shift + Ctrl + Alt + U打開:
這個圖默認顯示的是剛才選中的類,而且沒有顯示任何其他信息。頂部的工具欄,可以篩選顯示的元素,比如選中第三個選項,可以顯示類的方法:
其他的選項可以自己去看看,不再一一介紹了。
添加類
首先把這個類從圖中刪除:在圖中選中類,按Delete鍵刪除。
然后添加你敢興趣的類。你可以直接把類拖進來:
也可以通過空格+類的名字來添加:
注意
2017.1版本的出現了一個bug,無法通過這種方式添加類。bug已被提交到這里,目前尚未被修復。
如果你添加的類和已有的類之間有繼承關系,那么這個關系會被自動標識出來:
按下Alt再移動鼠標,會有放大鏡的效果:
在這個基礎上,去探索其他的功能吧。比如可以從類圖跳到具體方法的源代碼位置,比如可以過濾顯示public或者其他級別的元素。
為什么說這個工具好用?
有些時候我們需要分析特定的幾個類,現在只需要找到這些類,把它拖進來就好了。
比如我在分析線程池的時候,用的是上圖。左側是任務的接口,中間是線程池的繼承結構,右側是任務的執行結果。Executors是一個工具類,用于創建線程池的實例。這樣就很清晰了。我一般使用截圖工具將它截圖到onenote上,然后在附近添加注釋。
這個是我在分析阻塞隊列時用的圖。
它讓我們的焦點得以集中。快速、便捷、集中,想想看以前我要分析特定的幾個類的時候,都是要自己查API,畫類圖的。
它還有哪些缺點
它可能顯示不完整
比如上圖中最下面的幾個方法,都沒有顯示完整,而且不可以手動調整大小,所以目前還沒有解決辦法。
它沒有實現高度定制
只把我想關注的類集中起來,這個是做到了。但是有些時候我只想關注其中某一個類的方法,卻無法做到,要么所有類的方法都顯示,要么都不顯示。有些時候我還想只關注某個類的部分方法,也做不到,只能根據訪問控制符進行簡單過濾。
無法主動添加其他圖形
這個要求可能高了點,因為這是對于一個畫圖工具的要求。比如上文中提到的線程池的分析圖,我很想畫幾個框把不同角色的類框起來,但是這里做不到。