-- 作者:wakanpaladin
-- 发布时间:4/1/2005 8:02:00 PM
-- XP设计原则Zz
1 简单是关键 简单的设计总是花较少的时间完成复杂的任务。因此记住要总是做有可能完成的最简单的事情。如果你发现一个事情很复杂,用简单的事情替换它。与其在复杂的代码上消耗更多的时间,还不如用简单的代码替换,这样更快,而且更省事。尽可能使事情简单化,在执行计划期间,尽可能不增加新的功能。要记住保持简单的设计是长期坚持的工作。 2 选择系统比喻 选择系统比喻是为了通过对类和方法的一致命名,为团队提供一致的画面。你的对象名称对于系统整体设计的理解和代码重用是非常重要的。如果能取一个名字,使它容易猜出来,并且还是正确的,那么你就是一个能节约时间的人。选择一个涉及广泛的对象命名的方法而没有详细描述,很难获取对于系统的认识。 例如克莱斯勒汽车公司薪水支付系统象生产线那样被建造了。福特汽车销售系统象材料清单那样被构造了。使用基于你本身领域的美丽的比喻,使它为人所知。但是,除非它相当简单,别选美丽的比喻。 3 CRC 卡片 使用CRC(Class,Responsibilities,Collaboration)卡片来作为团队的设计。CRC卡的最大价值在于允许人们从思考过程模式中脱离出来,更充分的专注于对象技术。CRC卡允许整个项目组对设计做出贡献。参与系统设计的人越多,能够收集到的好主意也就越多。 个别的CRC卡被用来描述对象。对象的类写在卡的最上边、责任在左边下边编成表,每个责任的右边是协作的类列表。因为以前CRC会议是大家全力参与的,通常只需要很少的有类名的卡片,实际上没有写出完整的卡片,所以,我们说“要写”。这个例子显示咖啡制造商问题的一部分。 CRC会议继续进行,一些人模拟系统和对象交流,把消息传给其他的对象。通过一步步处理弱点,问题很容易地被解决。设计选择可以通过做建议的模拟实验迅速地做出决定。 如果你发现很多人在讲话并且移动卡片,立即简单的限制站着的人数,把卡片移到下一人。当一个人座下的时候,其它的人可以站起来。自由讨论会议这项工作,常常发生的情况就像当艰难的问题最终被解答的时候,开发组变得吵闹一样。 CRC卡受到的最大的批评之一是缺乏有记录的设计。CRC卡使设计看上去显而易见,所以这通常不需要。应该要求永久性的记录,每一个类一张卡,每个卡作为文档详细记录和保留。一旦预想已经建立和运行,在一段时间内,设计被人记住了。 4 道钉解决方案 为了对技术或设计的难题的做出解答,产生道钉解决方案。道钉解决方案是一个探究潜在解决方案的非常简单的程序。构造一个系统,仅仅专注于检查出现的问题,忽略所有其它的方面大部分的道钉不会保持的足够好,所以,要打算扔掉它。使用道钉的目标是减少技术性问题的风险,或者,增加用户故事 评估的可靠性。当技术性的困难阻碍系统开发的时候,在这个难题上配备一对开发者,给上一星期或两个星期的时间以减少潜在的危险。 5 不要过早地增加功能 保持系统的整洁,把你猜想的额外的素材以后加入。只有10%的额外素材得到使用,所以你在浪费90%的时间。因为我们明白怎样增加,或者我们想使系统变得更好,所以我们都被诱惑到现在增加功能而不是以后。现在增加功能,似乎更快。但是,我们需要常常提醒自己:实际上我们不需要它。额外的功能将总是使我们开发变慢,而且浪费我们的资源。把眼光放到将来的需求和额外的适应性上。只关注于今天的进度。 6 及时地重新构造 在软件变的不适用以后很长时间,我们的算机程序员仍然保持设计不变。我们继续使用和重用很长时间没有维护的代码,因为在某种方式下还能继续工作,我们害怕修改它。但是,这样去做真的值得吗?极端编程(XP)认为不是这样。当我们除掉冗余,删除未使用的功能,更新陈旧设计的时候,我们进行 重新构造(refactor)。贯穿整个项目生命周期的重构工作节约了时间,保证了质量。 为了保持设计的简单,避免不必要的混乱和复杂,及时重构。保持代码的简洁、明了,以便它更容易理解、修改和扩展。确认每件事情都被表示一次,并且只一次。结果,花更少的时间产生更好的系统。 重构有几个要点。首先,很难,因为你必须能够放开你想象中的完美的设计,接受你通过重构偶然发现的设计。你必须认识到你想象的设计只是好向导方向,实际上马上会变得陈旧。 为了吃到大量的树叶,毛虫是一个完美的设计,但是,它不能找到配偶,它在计划找到它的同类以前,必须把自己变成一只蝴蝶。放弃你认为系统应该是什么或不是什么的想法,试着留心在你面前出现的新的设计。
|