设想的用户交互流程
?
1.?????? 一開始,顯示整個工程的狀況
這一步具體有很多工作要做,最終目標是能夠讓用戶快速分辨出工程由幾個模塊組成,哪些模塊屬于高層模塊,哪些屬于底層模塊,分辨出每個模塊中比較重要的類。還有每個類在程序里面的實際影響范圍。
具體的設想在下一步進行,當前重點考慮類內(nèi)部的設計。
?
2.?????? 用戶選出感興趣的模塊,進而挑選感興趣的類。
假設挑選了下面這個類。
3.?????? 用戶第一眼,應該能夠分辨出這個類最主要的成員。包括處理核心計算的1-2個函數(shù),最重要的3-4個變量。其余函數(shù)、變量以不顯眼的形式(例如灰色或淡色的節(jié)點)展示,這樣用戶可以看出一些額外的信息,例如這個類是函數(shù)多,還是變量多。最主要的函數(shù),其相關的調(diào)用關系也以顯眼的邊畫出。我認為可以借助城市不同等級道路的表示方式。
?
當前函數(shù)的效果如下面左圖,而函數(shù)加變量的效果為下面右圖。主要問題是所有的函數(shù)、變量都顯得同等重要,無法分出主次,連接邊太過亂。
?
4.?????? 為了讓用戶對類的工作方式有進一步了解,需要以某種形式展示類的數(shù)據(jù)流圖。
?
首先需要分出數(shù)據(jù)入口和出口。初步的方法可以檢查類的公有成員函數(shù)(因為這部分成員才與外部發(fā)生數(shù)據(jù)交換,先不考慮友元、靜態(tài)函數(shù)等特殊情況),若函數(shù)設置了類內(nèi)部的變量,認為其為數(shù)據(jù)入口,若函數(shù)設置了傳入的變量,或者返回內(nèi)部變量,認為其為數(shù)據(jù)出口。可以以一些簡單的圖標展示,例如下圖的箭頭(下圖僅僅根據(jù)函數(shù)的set和get前綴標注了相應的函數(shù))。但是這些圖標默認必須是隱藏的,只有在用戶打開開關時才顯示,以防一開始分散用戶的注意力。
?
然后可以指出一些重要的數(shù)據(jù)流向。例如,用戶指定幾個入口,幾個出口,系統(tǒng)找出幾個可能的數(shù)據(jù)流。下圖中用戶指定setSelectedEntity為入口,getSelectedEdges為出口,系統(tǒng)計算出可能的數(shù)據(jù)流。即通過setSelectedEntity->updateSelectedRendering->getSelectedEdges 這樣的函數(shù)調(diào)用順序,有可能(不保證完全準確)把輸入的entity數(shù)據(jù)轉換成輸出的selectedEdges數(shù)據(jù)。
?
5.?????? 用戶還可以通過交互,從核心函數(shù)開始,逐步了解類的其余部分。例如通過選定其中一個函數(shù),知道與其相關的函數(shù)和變量。
來自為知筆記(Wiz)
轉載于:https://www.cnblogs.com/dydx/p/4534834.html
總結
- 上一篇: Java日志性能那些事
- 下一篇: UML学习笔记(4)——类图之间的关系