《C++编程惯用法——高级程序员常用方法和技巧》——1.4 使用CRC卡片来辅助设计

1.4 使用CRC卡片来辅助设计

由Kent Beck和Ward Cunningham设计的CRC卡片是一种用来帮助设计人员在设计阶段前期进行设计的工具,此时设计人员应该做的事情就是:从问题域中找到合适的对象并理解它们之间的关系。

CRC卡片的含义十分简单,也没有什么技术含量在里面。当一群人聚在一起开始进行高层设计时,他们会为每个潜在的类建立一张索引卡片,在该卡片上面,他们会写上类的名字,它主要的功能,以及它将会和哪些类进行交互。

有了这些卡片后,设计者就可以利用它们来模拟不同的场景。每个参与者负责其中一个或多个对象的角色,然后描述他的对象在面对其他对象的请求时应该做出的反应。通过这种角色模拟,设计者就可以进一步细化系统中类的职能和协作,并把它们记录在卡片上。整个设计小组可以也基于这种讨论来为那些有着不精确(或者是模糊)含义名字的类取一个更贴切的名字。

由于卡片上面的空间有限,这就鼓励设计者们尽可能采取简单的抽象模型—我们很难在一张索引卡片上面描述出复杂的抽象模型。这种卡片也有助于设计者将类进行分类,以构造合适的继承体系。我们可以将那些获得大家一致通过的卡片放到桌子上面,并接着对那些剩下的卡片进行重复的讨论,直到大家取得一致意见为止。

进行这样的角色模拟有时可能会出现一些偏离项目的话题,但它同时也鼓励大家进行“头脑风暴(brainstorm)”,将自己认为想的比较好的东西在非正式的场合中提出来和大家一起讨论。虽然大部分的离题讨论都将无疾而终,但有时偶尔的一两个火花也会产生那些在传统且正式的设计复审时产生不了的突破。

CRC卡片并不能代替完备的、用来描述类的行为细节的文档。它们主要的作用也就存在于设计的初始阶段:它们可以帮助设计人员正确地得到高层框架的信息,更早(而不是更晚)地理解和分辨出那些重要的问题。

注意:它们不可能像索引卡片那样被整理,你可以将它们粘在墙上,并保留对它们进行重新排列的权利(就像你使用Post-It随手贴一样)。

时间: 2025-01-21 19:44:06

《C++编程惯用法——高级程序员常用方法和技巧》——1.4 使用CRC卡片来辅助设计的相关文章

高级程序员考试时间安排和参考书推荐

文章来源于网络,参考以下! 高级程序员考试(以下简称高程考试)是计算机软件资格与水平考试中难度比较大的一级,也是许多在校大学生热衷参与的一项考试.下面是笔者参加高程考试的一点体会,希望对那些正在准备高程考试的朋友有所帮助. 复习时间安排 高程考试分上午考试和下午考试,上午考基础知识, 考试时间为150分钟:下午考软件设计和程序编制能力,考试时间也为150分钟. 要想顺利通过高级程序员考试,那么就应该有一个完备的复习计划.报考高级程序员考试应该尽早准备,把工夫下在平时,尤其是像程序设计语言和汇编语

高级程序员装逼指南,是高级哦!

下面这个才是高级版本 ;; 这是注释 ;; 0.9版本 ;; 2011年8月22日   ** 前言 ** 最近网上出了一个<程序员装逼指南>,觉得这个东西其实图样图森破 然后在下跟微博上的一些程序大牛讨论了一下如何装逼,深有感触 程序员嘛,外行人看起来已经是不可理解的奇怪生物了,自然也没必要跟他们再装逼 所以呢,如何对其他程序员装逼就是一门很有学问的事了 于是乎在下手痒写了个<高级程序员装逼指南>,请大家指正   ** 编程语言 ** 千万千万千万千万不要说自己是Java/C#/C

程序设计考试大纲(高级程序员级)

一.考试说明 1.考试要求: (1)熟练掌握面向对象编程技术,用C/C++语言熟练编制程序: (2)了解CASL汇编语言的程序编制: (3)掌握软件设计的方法和技术: (4)掌握数据结构.程序语言.操作系统.数据库和软件工程的基础知识: (5)了解多媒体和网络的基础知识: (6)掌握计算机体系结构和主要部件的基础知识. 2.通过本级水平考试的合格人员能按照软件需求规格说明书进行软件设计和编制程序,具有相当于工程师的实际工作能力和业务水平. 3.本级水平考试范围包括两个模块: 模块1--软件设计和

C++高级程序员成长之路_C 语言

C++这门语言从诞生到今天已经经历了将近30个年头.不可否认,它的学习难度都比其它语言较高.而它的学习难度,主要来自于它的复杂性.现在C++的使用范围比以前已经少了很多,java.C#.python等语言在很多方面已经可以代替C++.但是也有很多地方是其他语言完全无法替代的,主要集中在需要运行效率比较高的行业,比如游戏.高效的服务器. 现在学习java.C#等语言的人数远远高于C++,主要是C++的入门门槛太高,可能学习了一段时间后还做不了什么东西,导致信心大受打击,进而放弃. 我想把我自己的经

想成长为高级程序员需要这么几个阶段

软件开发是一个奇怪的行业,市场远远供不应求.这是一个已经存在多年的问题,而且随着时间的流逝,愈演愈烈. 我们严重缺乏能够满足需求的人才.这个行业相当年轻.大多数软件项目是失败的.几乎所有的项目都会超出预算.我们解决问题的最佳指导方针可以归结为--"用一些通用方法去解决问题,当然这些方法常常不管用,于是,唯一能做的就是不断地尝试,逐个看看是否奏效". 现在我们把淫浸代码时间超过3年的开发人员称为"高级开发人员".这些人通常把持领导岗位,最终做出来的东西,你懂的--非常

C#中级,高级程序员评定所需要的职业技能

问题描述 给位大神给个中级和高级所需技能的说法:开发经验两年半,做过cs/bs架构的项目,ERP,OA等语言C#,java精通w3c服务器脚本,浏览器脚本,xml,html触发器,事件,多线程,委托想知道中级是什么水平?高级是什么水平?还需要知道那些技能方面的?望各位大神给我指明方向.分不多了不好意思. 解决方案 解决方案二:不太明白???中高级程序员是有国家的考试吧这个意义不大了,又恐就考一个解决方案三:竟然有一样精通,那自然比高级还要厉害解决方案四:能做高级我想必然有它的理由,我感觉自己还没

从一个职校走出来的高级程序员

其实这篇文章早就该写了,但是每当打开博客准备着手去写的时候,便开始回忆,记忆渐渐的回到了过去一幕幕的放映着,但是手指却是僵硬的,不知为何连敲键盘的力气都没有,那段经历是我一生当中都永远不会忘记的,我是不愿意去回忆,不愿意让别人知道我的过去,随着时间的流逝,自己也渐渐明白要想成功必定付出常人不能承受的痛苦才能成为可能,希望将自己的经历写出来能够帮助跟我一样曾经徘徊在学校阴暗角落的人,希望不懂事的孩子看过本人的经历之后能够痛改前非努力学习,在将来的某一天带着自己的老爸老妈出去玩玩,看看海啊,坐坐飞机

高级程序员应该具备什么能力

  互联网,创造了很多神话,也造就了很多传奇色彩的人物,而这些传奇色彩人物绝大多数从技术,甚至可以讲从程序员起步,所以说:科技改变未来,程序重塑人生,一点都也不为过.从我一个多年从事IT行业的老程序员来讲,我对程序员是充满敬意的. 可是,我今年出来创业,做 金融堂 项目,接触过不少"高级程序员"后,似乎改变了这种看法,为啥呢?我先说几种现象: 1. 小李,4年IT从业经验,来我司求职高级程序员(SE)一职,要其设计一个"网上支付方案",1个小时过去后,交了白卷给我,

广州高级程序员薪水是多少

问题描述 在广州一家小公司做了半年了,因为种种原因吧,现在想提薪,转高级程序员,大家给点意见,薪水叫多少好?我喊了5000/月. 解决方案 解决方案二:5000在天河区中等偏上吧6000是个坎儿解决方案三:半年...如果1年的话倒是可以解决方案四:我也觉得有点难了.解决方案五:1.半年就可以算高级吗?2.高级是转的?不是考水平吗?解决方案六:呵呵,不算高级吧,只是咱们经理叫我转的.解决方案七:不算高级吧,解决方案八:应该还可以解决方案九:5000左右解决方案十:广州5500差不多解决方案十一:该