刚刚买Robert C. Martin的经典著作《敏捷软件开发:原则、模式与实践》时,当时有些地方看不太懂,今晚又掏出来重新回味,灌输大脑。顺便记录一下经典的原则,有空常来看看,潜移默化。
敏捷软件开发
原则、模式与实践
(美)Robert C. Martin 著
一、敏捷软件开发宣言
我们正在通过亲身实践以及帮助他人实践,揭示更好的软件开发方法。通过这项工作,我们认为:
1)个体和交互 胜过 过程和工具
2)可以工作的软件 胜过 面面俱到的文档
3)客户合作 胜过 合同谈判
4)响应变化 胜过 遵循计划
虽然右项也具有价值,但我们认为左项具有更大的价值。
二、敏捷宣言遵循的原则
我们遵循以下原则:
1)我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。
2)即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。
3)经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。
4)在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。
5)围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。
6)在团队内部,最具有效果并富有效率的传递信息的方法,就是面对面的交谈。
7)工作的软件是首要的进度度量标准。
8)敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。
9)不断地关注优秀的技能和好的设计会增强敏捷能力。
10)简单——使未完成的工作最大化的艺术——是根本的。
11)最好的架构、需求和设计出自于自组织的团队。
12)每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应的对自己的行为进行调整。
三、面向对象设计的原则
1)SRP 单一职责原则
就一个类而言,应该仅有一个引起它变化的原因。
2)OCP 开放—封闭原则
软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改。
3)LSP Liskov替换原则
子类型必须能够替换掉它们的基类型。
4)DIP 依赖倒置原则
抽象不应该依赖于细节。细节应该依赖于抽象。
5)ISP 接口隔离原则
不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。
6)REP 重用发布等价原则
重用的粒度就是发布的粒度
7)CCP 共用封闭原则
包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。
8)CRP 共同重用原则
一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中所有类。
9)ADP 无环依赖原则
在包的依赖关系图中不允许存在环。
10)SDP 稳定依赖原则
朝着稳定的方向进行依赖。
11)SAP 稳定抽象原则
包的抽象程度应该和其稳定程度一致。
四、极限编程实践
1)完整团队
XP项目的所有参与者(开发人员、业务分析师、测试人员等等)一起工作在一个开放的场所中,他们是同一个团队的成员。
2)计划游戏
计划是持续的,循序渐进的。每2周,开发人员就为下2周估算候选特性的成本,而客户则根据成本和商务价值来选择要实现的特性。
3)客户测试
作为选择每个所期望的特性的一部分,客户定义出自动验收测试来表明该特性可以工作。
4)简单设计
团队保持设计恰好和当前的系统功能相匹配,它通过了所有的测试,不包含任何重复,表达出了编写者想表达的所有东西,并且包含尽可能少的代码。
5)结对编程
所有的产品软件都是由两个程序员,并排坐在一起在同一台电脑上构建的。
6)测试驱动开发
程序员以非常短的循环周期工作,他们先增加一个失败的测试,然后使之通过。
7)改进设计
随时改进糟糕的代码。保持代码尽可能的干净,具有表达力。
8)持续集成
团队总是使系统完整地被集成。
9)集体代码所有权
任何结对的程序员都可以在任何时候改进任何代码。
10)编码标准
系统中所有的代码看起来就好像是被单独一个——非常值得胜任的——人编写的。
11)隐喻
团队提出一个程序工作原理的公共景像。
12)可持续的速度
团队只有持久才有获胜的希望,他们以能够长期维持的速度努力工作,他们保存精力,他们把项目看作是马拉松长袍,而不是全速短跑。
(转载请注明来源:http://zhanjia.iteye.com/blog/1807581)
相关推荐
《敏捷软件开发:原则、模式与实践》是软件开发领域一本极为重要的著作,它深入探讨了面向对象设计的原则、敏捷开发的方法以及实际操作中的最佳实践。这本书为开发者提供了丰富的知识和指导,帮助他们构建高质量、可...
面向对象编程(Object-Oriented ...遵循这些原则,开发者可以构建出更加灵活、易于理解且不易出错的软件系统。通过阅读ocp.pdf、lsp.pdf、dip.pdf和isp.pdf这些文档,你可以深入了解每个原则的具体应用和实践。
本书介绍了敏捷、OOP、设计模式和UML
在实际的软件开发中,OOP是解决复杂问题的有效工具,通过封装、继承和多态等核心原则,可以构建出易于理解和管理的代码结构。 **封装** 是OOP的基础,它将数据和操作数据的方法捆绑在一起,形成一个独立的实体——...
**OOP设计原则详解** ...了解并实践这些OOP设计原则,可以帮助开发者编写出更加优雅、灵活和健壮的代码,提高软件的可维护性和可扩展性。对于初学者和经验丰富的开发者而言,这些都是不可忽视的重要知识。
3. **面向对象编程**(OOP):面向对象的编程是现代软件开发的核心,本书会教授如何通过类和对象来设计软件系统,包括继承、封装、多态等OOP原则。 4. **设计模式和原则**:软件设计模式如单例模式、工厂模式等,...
通过深入理解和应用这些原则,开发者可以设计出更加灵活、可扩展的代码结构,提高软件的可复用性和可维护性,从而提升整个项目的开发效率和质量。在实际编程过程中,结合设计模式和最佳实践,这些原则能够帮助我们...
面向对象编程(OOP)是现代软件开发中的基础,遵循一系列设计原则可以帮助我们构建更加稳定、可维护的系统。SOLID原则是OOP设计中最重要的五个原则,它们分别是: 1. 开闭原则(Open-Closed Principle,OCP):一个...
本资料主要围绕“软件工程-OOP方法学”展开,旨在深入解析面向对象编程在软件工程实践中的应用。 首先,我们需要理解面向对象的基本概念。对象是OOP的核心,它封装了数据和操作数据的方法,形成一个独立的实体。类...
书中对敏捷开发的描述涉及了敏捷宣言、敏捷联盟以及极限编程(Extreme Programming, XP)等实践。极限编程是一种更为具体的敏捷实践,它强调风险管理和四种价值观:简化、沟通、反馈和勇气。 书中还提供了一些设计...
在这个"oop-xp1.zip_11oop.com"压缩包中,我们可以看到一个用OOP思想开发的纸牌小游戏。这个程序不仅是一个实用的示例,也是学习和理解面向对象编程理念的良好资源。 在描述中提到的"面向对象的思想"是OOP的核心。...
面向对象软件开发技术(OOA-OOD-OOP)
在实际的软件开发中,设计思想、原则和模式起着至关重要的作用,它们是编写高质量代码的基石。本文将从面向对象、设计原则等方面进行详细阐述。 首先,面向对象编程(Object-Oriented Programming,简称OOP)是现代...
的面向对象代码是软件开发的核心,这涉及到对编程语言特性的深入理解、良好的设计原则和模式的应用,以及对代码质量的严格把控。面向对象设计的精髓在于将现实世界的问题映射为对象和它们之间的交互,从而提高代码的...
### Java基础总结练习,熟悉OOP开发知识点 #### Java OOP概述 Java是一种面向对象编程语言(Object-Oriented Programming,OOP),其核心概念包括类(Class)、对象(Object)、继承(Inheritance)、封装...
测试驱动的面向对象软件开发是一种将测试作为软件开发过程中核心组成部分的方法论。这种方法结合了测试驱动开发(TDD)和面向对象编程(OOP)的优势,旨在提高代码质量、增强可维护性和降低后期修复错误的成本。 ##...
本书主要介绍了利用主流开发方法学和技术技巧进行面向对象开发的原则与实践,通过完整剖析一个实际应用程序的设计、开发与实现,深入浅出地阐述ood(面向对象开发)、oop(面向对象程序设计)、tdd(测试驱动开发...
了解软件开发生命周期(SDLC)和敏捷开发方法(如Scrum或Kanban)有助于团队协作和项目管理。 11. **调试技巧**:学习如何使用调试工具查找和修复代码中的错误,是每个开发者必备的技能。 12. **测试**:单元测试...
best practices是指在软件开发中的一些最佳实践,例如使用版本控制系统、编写自动化测试、遵守设计原则等。这些best practices可以帮助开发者提高软件的质量和效率。 测试驱动的面向对象软件开发是一种软件开发方法...