讀 Go 源碼,可以試試這個工具

原文鏈接: 讀 Go 源碼,可以試試這個工具

編程發展至今,從面向過程到面向對象,再到現在的面向框架。寫程式碼變成了一件越來越容易的事情。

學習基礎語法,看看框架文檔,幾天時間搞出一個小項目並不是一件很難的事情。

但時間長了就會發現,一直這樣飄在表面是不行的,技術永遠得不到提升。

想要技術水平有一個質的飛躍,有一個很好的方法,就是讀源碼。

但讀源碼真的是一件很有挑戰的事情。

想想當年自己讀 Django 源碼,從啟動流程開始看,沒走幾步就放棄了,而且還放棄了很多次。

這麼說吧,我對 Django 啟動部分的程式碼,就像對英文單詞 abandon 那麼熟悉。

後來總結經驗,發現是方法不對。

主要原因是一上來就深入細節了,事無巨細,每個函數都不想錯過。結果就導致對整體沒有概念,抓不住重點,又深陷無關緊要的程式碼。最後就是看不進去,只能放棄。

最近看了一點 Go 源碼,慢慢也摸索出了一些心得。有一個方法我覺得挺好,可以帶著問題去讀源碼,比如:

在解決問題的過程中也就對源碼更熟悉了。

還有一點要注意的就是,先看整體,再看細節。

在這裡推薦給大家一個工具,這個工具可以幫我們梳理出程式碼的整體結構,我覺得還是挺有用的。是一個開源項目:

項目地址: //github.com/jfeliu007/goplantuml

這個項目可以分析一個 Go 項目,然後生成介面和結構體的 UML 圖。有了這個圖之後,基本上也就對項目整體關係有了一個基本概念,再讀程式碼的話,相對來說會容易一些。

項目具體怎麼用我倒是沒仔細研究,因為老哥非常貼心的寫了一個 WEB 頁面:

網站鏈接: //www.dumels.com/

使用起來很方便,首先在頁面最上方輸入框輸入項目地址,然後在左側輸入要分析的程式碼目錄就可以了。默認生成的圖中會包括 Fields 和 Methods。

填寫好資訊之後就可以生成 UML 圖了。比如我輸入的 src/sync,就得到了下面這張圖,有了這張圖,對程式碼結構之間的關係就更清晰了。

還可以一次分析多個目錄,多個目錄用英文逗號分割。

如果不填寫要分析的目錄,則會分析整個項目,也可以選擇是否要忽略某個目錄。

友情提示一點,不要試圖分析整個 Go 項目,可能是項目太大了,頁面是不會給你返回的。

好了,本文就到這裡了。你有什麼好用的工具嗎?歡迎給我留言交流。


往期推薦:

Exit mobile version