對類的依賴關(guān)系可視化的好處:松耦合的代碼設(shè)計(jì)
寫出簡潔邦危,優(yōu)雅的代碼是每一個(gè)程序員的追求。但是實(shí)際的項(xiàng)目過程中,我們時(shí)常面對著很多糟糕的代碼米死,我們可能在同一個(gè)項(xiàng)目中重復(fù)的寫著其他人已經(jīng)完成過的工作,抑或遺留一些永遠(yuǎn)不會(huì)再用到的歷史代碼贮庞,抑或組件之間的相互依賴過于復(fù)雜峦筒,不同的類責(zé)任劃分不合理,某些類承擔(dān)了過于繁重的工作窗慎。這些情況都會(huì)給我們留下一個(gè)緊耦合的項(xiàng)目物喷,不方便維護(hù)和測試。
通過對導(dǎo)入類的可視化遮斥,可以清晰的查看項(xiàng)目中的各個(gè)類之間的依賴關(guān)系峦失,模塊與功能劃分是否耦合度過高,是否有功能重復(fù)的類等等术吗,不僅如此尉辑,對于學(xué)習(xí)或者熟悉新的項(xiàng)目也是事半功倍的。
案例展示:
下面是第三方庫AFNetworking的類之間的依賴關(guān)系圖
從圖中我們可以清晰地看出AFNetworking中類與類之間的依賴關(guān)系藐翎,其中AFURLSessionManager處于一個(gè)核心的位置材蹬,結(jié)合不同模塊的類做了核心的工作,AFHTTPSessionManager引用了AFURLSessionManager吝镣,并在其核心功能上做了封裝堤器,為使用者提供出更加易用的接口。
可視化操作步驟:
通過編寫python腳本末贾,對目錄中的每個(gè)類文件進(jìn)行中提取導(dǎo)入闸溃,將結(jié)果生成.dot文件,再用OmniGraffle打開即可拱撵。
編寫python腳本辉川,這里已經(jīng)有一個(gè)開源項(xiàng)目,可以直接下載源代碼拴测,點(diǎn)擊鏈接乓旗。
打開終端,鍵入:
$ cd objc_dep-master
進(jìn)入腳本所在目錄集索,鍵入:
$ python objc_dep.py /Users/XXX/AFNetworking > fswalker.dot
其中/Users/XXX/AFNetworking為項(xiàng)目路徑屿愚,fswalker.dot為生成可視化文件的文件名汇跨,該文件和腳本在同一個(gè)目錄下。
- 安裝OmniGraffle妆距,并用OmniGraffle打開fswalker.dot文件即可穷遂。