极限编程实践

极限编程实践
完整团队            用户故事            短交付周期       验收测试            结对编码            测试驱动开发

集体所有权       持续集成            可持续的开发速度        开放的工作空间             计划游戏

简单设计            重构      隐喻

避免设计的臭味
·         僵化性 (rigidity) ——设计难以改变。

·         脆弱性(fragility)——设计易于遭到破坏。

·         顽固性(immobility)——设计难以重用。

·         粘滞性(viscosity)——难以做正确的事情。

·         不必要的复杂性(needless complexity)——过分设计。

·         不必要的重复(needless repetition)——滥用鼠标进行复制、黏贴。

·         晦涩性(opacity)——混乱的表达。

设计原则
·         单一职责原则(SRP):一个类应该只有一个发生变化的原因。

·         开放封闭原则(OCP):软件实体应该对扩展开放,对修改关闭。

·         Liskov替换原则(LSP):子类型(subtype)必须能够替换掉它的基类型(base type)。

·         依赖倒置原则(DIP):a. 高层模块不应该依赖于低层模块。二者都应该依赖于抽象。b.抽象不应该依赖于细节。细节应该依赖于抽象。

·         接口隔离原则(ISP):不应该强迫客户程序依赖并未使用的方法。

·         DRY:Don’t repeat yourself Principle。通过抽取公共部分放置在一个地方避免代码重复。

·         封装变化 (Encapsulate what varies)。

·         面向接口编程而不是实现(Code to an interface rather than to an implementation)。

·         优先使用组合而非继承(Favour Composition Over Inheritance)。

包和组件的设计原则
重用-发布等价原则(Reuse-Release Equivalence Principle, REP):重用的粒度就是发布的粒度。
共同重用原则(Common-Reuse Principle, CRP):一个组件中的所有类应该是共同重用的。如果重用了组件中的一个类,那么就要重用组件中的所有类。
共同封闭原则(Common-Closure Principle, CCP):组件中的所有类对于同一种性质的变化应该是共同封闭的。一个变化若对一个封闭的组件产生影响,则对该组件中的 所有类产生影响,二对于其他组件则不造成任何影响。
无环依赖原则(Acycle-Dependencies Principle, ADP):在组件的依赖关系图中不允许存在环。
稳定依赖原则(Stable-Dependencies Principle, SDP):朝着稳定的方向进行依赖。
稳定抽象原则(Stable-Abstraction Principle, SAP):组件的抽象程度应该与其稳定程度一致。