Xiao Peng

My personal blog moves to xiaopeng.me , blogs about design patterns will be synced to here.
肖鹏,ThoughtWorks资深咨询师,目前关注于架构模式、敏捷软件开发等领域,并致力于软件开发最佳实践的推广和应用。
多次为国内大型企业敏捷组织转型提供咨询和培训服务,在大型团队持续集成方面具有丰富的经验。
  博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理

Shooting for Simple Design (已获得Ron Jeffries授权)

Posted on 2007-06-17 15:43  勇敢的鸵鸟  阅读(1131)  评论(2编辑  收藏  举报

摘要:因为项目特别紧张,很久没有时间看书和更新博客了,就像欠了一屁股的债。很早以前(今年二月份)就跟Ron说要把这个系列翻译成中文,一直没有开始。就从它开始吧!

Ron Jeffries是一位资深的程序员。很多人都是资深程序员,但是多数人在他面前都显得太年轻了。他"has been a systems developer for more years than most of you have been alive"(他做系统开发人员的时间比大多数人的年龄都大)。

本系列(我也是边看边翻),讲述了Ron和Chet开发一个项目的详细过程。在邮件列表上有非常多的讨论,如果有可能我也会把讨论的内容贴过来。但是相信我,至少我会把这个系列翻完。

Ron Jeffries
11/28/2006

预算、简单性、TDD、跟踪。Chet和Ron使用了一个比平时运行的项目稍大一些的项目,来看看发生了什么。

原文链接:http://www.xprogramming.com/xpmag/dbcSimpleDesign.htm

提议项目

邮件列表上各位尊敬的对话者有时会觉得我们的回答太即兴或者太简单化了。比如,他们怀疑我们使用很少的Mock对象是因为我们处理的问题太简单。我们要说的是,我们的代码的确不复杂,但那是因为即使是棘手的问题,我们也会写出简单的代码。毫无疑问,答案是就在其中(Doubtless the answer is somewhere in between.)。上周一Chet Hendrickson和我讨论了一个听起来很有趣的问题,这个问题兴许能让我们长时间保持足够的兴趣在上面,还可以写下一些ideas。

通常,这些文章是按照时间顺序发布的。这里,作为开始,我们打破这个规则给你一个机会。我会随后做出解释。

Chet和我周一吃午饭的时候在一起呆了一个小时。我们谈了两件事情,我自己的一些问题和他头脑中的软件程序。我们差不多平分了那一个小时,因为我抱怨起来就很难停住,不过无论如何,这儿头几篇文章就是这15分钟到一个小时的成果。也许是30分钟。时间是很重要的(The time is potentially important.)。

基本的想法是写一个程序分析散弹枪的射击模式。Chet是一个飞靶射手,打得不错(a darn good one),你要做的是从35码之外射击一页纸然后看看结果会告诉你枪怎么样或者你的技术如何。我想你要得到的是一个很对称的模式。中部的密度比周围大,可能集中在目标之上的某一点。

我们的产品是一个基于计算机的服务。人们在纸上射击,把纸交给我们,我们产生计算报告关于枪和他们射击的重要指标。我们假定他们会得到一个多页打印的报告,其中一些是样板文件,另一些则是基于分析做了筛选或者替换的样板文件,还有一页漂亮的图显示和分析这个模式。

故事的想法包括:

  • 数字化一个射击图案,确定所有的洞。
  • 计算这些洞的中心。显示射击的各个区域的射击密度,随机点中心也许还可以确定不正确的簇。
  • 显示很酷的和明显昂贵(obviously expensive)的彩色结果图和灰色的刻度,证明花在这上面的是值得的。
  • Include pictures of what a probable break would look like if hit by shot in each of the various areas. (A central hit destroys the target, edge hits crack it in a couple of pieces, and and expert can tell from the break what part of his pattern hit it.)

我们的主报告包括大约9-18个图片和一些小的段落,有可能放在一个3x3的表格里。我们认为报告应该是PDF格式的,虽然也有可能有一个web表单。眼下,我们考虑它应该是一个邮购服务,包括一个格式化的、包装良好的报告。

上面列出的这些只是我们在半个小时内得出一些构想,我们为这个项目做了一些估计。在下一篇文章中,我们会讲到我们对应估计可以做些什么。这里,我们给你留个课题来估计一下这个项目,记录下你的假设和结果。如果你愿意把它发给我们,完全可以。无论如何,思考一下这个项目的大小,看看你能预估多少东西。

通常,在面临一个项目的时候,人们认为他们应该拥有所有的story,深深的挖掘设计和其它的考虑,查看一大堆的废话然后才能决定这个项目有多大。我们完全不同意,我们会在项目的进展过程中继续讨论这个话题。这里...你的工作是:估计一下这个项目。

请给我们写信(ronjeffries at acm dot org,chet at hendricksonxp dot com, 主题 [ron] Simple Design。这里我要提醒虽然项目都过了很久了,如果你愿意仍然可以写信给他们。)告诉我们你的估计,你还要知道什么等等。随着本系列的进展,也请给我们写信,告诉我们你的发现和你的问题。

谢谢!这一切会越来越有意思!