UML 作为笔记

2011 年 4 月 28 日

昨天我浏览了一个代码库,查看了代码中的领域模型部分。在探索代码库时,我喜欢做笔记来帮助我记住我学到的东西。对于某些代码库,特别是领域模型,我发现草绘 UML 类图很方便。

UML 似乎已经过时了。虽然这对我的经济状况不利,但我不能说看到许多相当糟糕的 UML 习语消失我很不高兴。我仍然发现它是一个有用的工具,就像那天早上一样。当我浏览代码时,我会记下类和关系,以了解各种类如何协同工作。

我没有为此使用“逆向工程”工具。此类工具在您的代码库上运行并自动生成类图。虽然从技术上讲这很容易做到,但结果却毫无用处。对我来说,一个好的图表的价值在于它突出了重要的东西,而忽略了不重要的东西。因此,我不会绘制每个类,更不用说每个关系和功能了。我决定记下我认为重要的东西,特别是关注那些在查看代码时通常不会显示出来的连接。我还只使用无穷无尽的类图语法的很小一部分,而且我不害怕在使用它时马虎。 [1]

当我这样做时,速度很重要。目前,我最喜欢的这种笔记工具是 Umlet [2]。我喜欢它的一点是,您捕获的大部分内容都以文本形式输入,使用类似维基的标记。因此,我可以快速地将东西粘贴进去,只使用鼠标来大致移动需要移动的东西。它是一个 Java 程序,因此它牺牲了美观性以换取可用性。

当我这样做时,我只是为自己绘制图表;因此,我不会花精力让它们对其他人来说清晰易懂。如果我要制作图表来帮助向其他人解释代码,我会以不同的方式处理它们。对于笔记,我是在为自己创建提醒,而对于解释性图表,我试图向另一个受众传达不同的东西。 [3]

笔记

1: 实际上,我并不马虎,因为我对语法非常熟悉,以至于我无意识地非常准确。但关键是,那些不太熟悉语法的人不应该在这种工作模式下担心它。

2: 是的,那个主页上充斥着广告,很难找到有用的东西。

3: 我也会使用不同的工具。如果我要发布图表,我会使用 OmniGraffle。自从 DHH 向我介绍它以来,我一直很喜欢它的漫射阴影。