UML 作為筆記

2011 年 4 月 28 日

昨天我在一個程式碼庫中四處瀏覽,查看程式碼的領域模型部分。在探索程式碼庫時,我喜歡做筆記,以幫助我記住我學到了什麼。對於某些程式碼庫,特別是領域模型,我發現繪製 UML 類別圖很方便。

UML 似乎已經有點過時了。儘管這對我的財務狀況不利,但我不能說我不高興看到許多相當可疑的 UML 主義消失。我仍然發現它是一個有用的工具,就像那天早上一樣。在我處理程式碼的過程中,我會記下類別和關係,以了解各種類別如何一起運作。

我沒有為此使用「逆向工程」工具。此類工具會在您的程式碼庫上執行,並自動產生類別圖。儘管在技術上執行起來相當簡單,但結果卻相當無用。對我來說,一張好的圖表價值在於它突出了重要的東西,並忽略了不重要的東西。因此,我不會繪製每個類別,更不用說每個關係和特徵了。我決定記下我认为重要的東西,特別關注在查看程式碼時通常不會出現的連接。我也只使用了一點無盡的類別圖語法,而且我不害怕馬虎處理它。[1]

在執行此操作時,速度很重要。目前,我最喜歡的此類速記工具是 Umlet [2]。我喜歡它的原因是,您擷取的大部分內容都以文字形式輸入,使用類似 wiki 的標記。因此,我可以快速地將東西貼進去,僅使用滑鼠在需要時大致移動東西。它是一個 Java 程式,所以它為了可用性而犧牲了美觀。

在執行此操作時,我僅為自己繪製圖表;因此,我不會花力氣讓它們對其他人來說清晰明瞭。如果我要製作圖表來幫助向其他人說明程式碼,我會採取不同的方法。透過筆記,我為自己建立提醒;透過說明性圖表,我試圖向其他受眾傳達不同的資訊。[3]

備註

1: 事實上,我並非如此草率,因為我非常熟悉語法,所以無意識地相當準確。但重點是,不太熟悉語法的使用者不應在這種工作模式中擔心這一點。

2: 是的,那個首頁充斥著廣告,讓人難以找到有用的資訊。

3: 我也會使用不同的工具。如果我要發布圖表,我會使用 OmniGraffle。自從 DHH 向我介紹它以來,我就愛上了它的漫射陰影。