星期二,2006 年 6 月 13 日

记得 CRC 卡吗?

由 josh 发布

1988 年,沃德·坎宁安(是的,就是那位沃德·坎宁安)想出了一个主意,使用索引卡作为面向对象设计的工具。当时我在 Apple 为肯特·贝克工作,所以我得以在肯特的办公室通过扬声器听到沃德描述他的想法。沃德和肯特在第二年的 OOPSLA 会议上提交了一篇论文,介绍CRC 卡,突然间 CRC 卡就流行起来了。一些公司甚至印制了带品牌标识的 CRC 卡,这至今让我忍俊不禁。

拿一张索引卡。(3x5 或 4x6 是不错的尺寸,但比这更大的尺寸就会过于笨重,难以移动。)在顶部写下的名称。画一条竖线将卡的其余部分分成大小不一的两个部分,左侧部分占大约 2/3 的宽度。在左侧写下该类的职责。在右侧写下与该类对象协作的对象或对象类。这就是基本知识。一旦你拥有代表多个类的卡片,就可以整理卡片来探索对象交互并发现新的职责和协作。

CRC 卡既可用于单人设计,也可用于协作设计,而后者是其真正大放异彩的地方。一个人可以轻松地移动卡片,向其他人展示自己的意思。由于卡片可以独立移动,两个人可以同时在不同的卡片上书写。这使得团队设计流程既轻量又高效。这也是描述设计的不错方法。

CRC 卡还非常符合 Rails 理念,其中限制可以赋能。卡片很小,所以你无法在上面写太多内容,导致变得过于复杂而难以理解。有限的空间让你集中精力处理重要的事情。并且由于卡片容易制作,所以也很容易丢弃 — 无投资即无痛苦。不喜欢卡片上的内容?只要将其撕掉,然后重新开始。

开始使用 CRC 卡的一项好方法是利用它们来记录现有设计。这样,你不必在学习新工具的同时处理设计创建。接下来,你也许会使用它们来修改或扩展现有软件的设计。一旦你熟悉它们,就可以采用它们来试用全新设计。

我的简短说明几乎无法公正地介绍此主题。请阅读沃德和肯特的论文,探索有关CRC 卡文章的原始维基页面,当然也可以在 Google 上搜索以获取更多信息。