1.考虑能够工作的最简单的事情
XP团队最开始的工作是以尽可能简单的方式实现第一批用户需求。尽可能寻找实现当前用户需求的最简单的设计。在实现当前的用户需求时,如果能够使用平面文件,就不去使用数据库或者EJB;如果能够使用简单的socket连接,就不去使用ORB或者RMI;如果能够不使用多线程就别去用它。
2.假设将不需要某些基础结构
XP团队的工作可能不会从基础结构开始,他们可能并不先去选择使用数据库或中间件。开始时假设将不需要那些基础结构。只有在有证据,或者至少有十分明显的迹象表明现在引入这些基础结构比继续等待更加合算是,才将其引入。
3.消除重复的代码
无论在哪里发现重复的代码,都应该消除它们。当发现那些重复的代码时,可以通过定义一个函数或基类的方法消除它们。有时两个或多个算法非常相似,但是它们之间存在着微妙的差别,就将它们变成函数,或者使用TEMPLATE METHOD模式。
消除重复的最好方法就是抽象。毕竟,如果两种事物相似的话,必定存在某种抽象能够统一它们。消除重复的行为会迫使团队提炼出许多抽象,并进一步减少了代码间的耦合。
简单的设计最重要的特性就是容易适应变化.为了达到这样的目的,简单设计应当:
能够简单地被理解.这依赖于你代码的可理解性.只有可理解,下面的简单性才能达到.
能够简单地被修改和扩展.OO系统往往通过增量的方法改变或增加系统行为,所以也就是要被简单地重用,这要求我们没有重复代码.
有最少数目的类.要易于理解系统,那么系统中每一个类应当和需要解决的问题的每一个重要概念相对应,如果人工加入许多毫无意义的类或者太多与问题概念无法对应的类,系统将无法理解
有最少数目的方法.每一个方法应该有他独立的意义, 如果没有可以言述意图的名字,那么系统将难以理解.