軟體度量指標能幫助識別程式碼中被複雜度掩蓋的關鍵設計元素,將其提煉為慣用模式。本文探討如何結合圈複雜度與傳入耦合,輔以視覺化工具進行緊急設計決策。
軟體指標無物理單位(如圈複雜度 "5"),僅在相對比較中具意義。單一數值參考價值有限,需透過:
使用 ckjm (Chidamber & Kemerer OO Metrics) 工具產出指標,WMC = 類別方法圈複雜度總和,Ca = 傳入耦合。
DoubleListUIBean 最複雜 (WMC 最高),但 Ca = 3,僅 3 個類別使用。重構投入產出比低。


Component 類別 Ca = 177,極高使用率,但複雜度低。改進其設計將影響全系統,屬高價值重構目標。

同時識別「最複雜」與「最核心」區域,即使不熟悉程式碼庫,也能快速鎖定高影響力改進點。
輸入原始碼目錄,產生指標金字塔,每層顯示比率與顏色(綠=基準內、藍=低於、紅=高於)。

關鍵層級:NDD (直接子類數)、HIT (繼承樹高度)、NOP (套件數)、NOC (類別數)、NOM (方法數)、LOC (程式碼行數)、CYCLO (圈複雜度)、CALL (方法調用數)、FOUT (扇出調用數)。
產業基準範圍表:
| 指標 | 低 | 中 | 高 |
|---|---|---|---|
| CYCLO/行 | 0.16 | 0.20 | 0.24 |
| LOC/方法 | 7 | 10 | 13 |
| NOM/類別 | 4 | 7 | 10 |
| NOC/套件 | 6 | 17 | 26 |
| CALL/方法 | 2.01 | 2.62 | 3.20 |
| FOUT/調用 | 0.56 | 0.62 | 0.68 |
Struts 結果:NDD 與 CYCLO 超標 (紅),LOC 與 NOM 偏低 (藍)。iPlasma 建議:繼承樹過深、方法過複雜。但需結合上下文判斷:Web 框架天然層次較深,NDD 高可接受;CYCLO 高則確實反映方法級設計問題。

對比 Vuze (50 萬行 BitTorrent 客戶端):繼承深度、類別方法數、方法行數、調用數均有潛在問題。

基於 Moose/CodeCrawler 技術,提供三大視圖:



iPlasma 與 X-Ray 僅是 Java 可用視覺化工具的冰山一角。善用指標組合與視覺化,能快速縮小關注範圍,發現程式碼中隱藏的優良與反模式,大幅降低重構前的分析成本,將更多時間投入實際改進工作。尋找慣用模式是緊急設計關鍵活動,工具讓這過程更高效、更有據可依。