《敏捷软件开发:原则、模式与实践》读书心得

发现此书

无心中在百度百科查看单一职责原则的介绍,提到面向对象五大设计原则(SOLID)是在《敏捷软件开发:原则、模式与实践》提出的。 我很是推崇这些设计原则,以为这是软件设计中很是伟大的思想。竟然没有读过这本神做,赶快读起来。程序员

做者 Robert C.Martin

做者又叫Bob大叔,编程界的巨匠,我很是喜欢他的《代码整洁之道》。没想到代码整洁之道还不算他最具含金量的图书,还有不少对编程界影响深远的图书。《敏捷软件开发:原则、模式与实践》就是其中一本。数据库

解读书名

从书名能够看出,本书一共是四块内容编程

  1. 敏捷开发
  2. 面向对象设计原则
  3. 面向对象设计模式
  4. 具体的实践

第一部分 敏捷开发

敏捷开发是针对团队而言的。是在说团队怎么怎么样。因此理解敏捷开发,要拉大咱们的视角,从团队的视角考虑开发。设计模式

书中的话语,要结合历史语境来写,做者所在的年头,项目组应该都很重视工具,流程。应该也是当时的大公司,大项目吧。可是做者认为,项目组内应该以人为本,重视的素质,重视人和人的沟通。函数

若是不合理使用工具,那再好的工具也白扯,若是流程很是复杂,那也会影响团队的效率。工具

第1章 敏捷实践

大而笨重的过程会下降团队的开发效率。书中并无解释大而笨重的过程是什么。我猜测就是开发大型项目有着复杂的瀑布模型的流程吧。单元测试

1.1 敏捷联盟

一种新的价值观的产生,一个团队应该怎样开发软件,才能更好的开发软件。测试

一批专家提出了敏捷开发宣言:设计

  1. 个体交互 赛过 过程和工具
  2. 能够工做的软件 赛过 面面俱到的文档
  3. 客户合做 赛过 合同谈判
  4. 相应变化 赛过 遵循计划

咱们仍是要结合历史来理解这四点,我理解当时的开发环境和如今仍是有所不一样的。如今开发多以产品为主,持续交付和产品迭代已成为常态,产品经理提一个小需求,开发,而后上线。而在当时,多以项目为主,开发某某大型系统。都是针对一个大型客户,为其定制一款软件。因此瀑布模型是瓜熟蒂落的。把需求全提出来,而后再设计软件,编写代码。面向对象设计模式

但瀑布模型真正实践起来,就很麻烦,须要不少的过程和工具,因此专家们说,要让团队内的程序员多多沟通,而不是走各类过程。

文档太多很麻烦,仍是要让代码足够清晰,而且能够工做。文档只描述关键的事。软件能够工做在如今看来是再正常不过的事,不过若是按照瀑布流的模式开发,几个月只写系统的一个模块(好比数据库操做模块这种),那几个月客户都看不到成型的系统,要等到全部模块都开发完。而敏捷开发推崇持续的交付,让客户针对一个需求点,能看到完整的功能。

客户合做赛过合同谈判,相应变化赛过遵循计划,也是由于软件一般都很复杂,客户最开始的描述每每也不许确,让开发团队闭门形成显然不合理。

1.2 原则

有了上面的价值观,书中就提出些更具体的,在开发过程当中,团队应该怎么作。 好比随时拥抱变化,业务人员和开发人员每天一块儿工做。

这些原则并非必定要遵守才对,而是一种思路,咱们要找到适合本身团队的原则。

1.3 结论

开发团队的目标,就是给客户交付最大可能的价值。敏捷开发能更好的实现咱们的目标。

第2章 极限编程概述

又有个概念须要咱们理解了,啥是极限编程。 极限编程就是敏捷开发的一组具体的实践。好比结对编程,重构这样的东西。

第3章 计划

描述了极限编程团队中对于计划的规划。让项目是小步迭代和发布的。

第4章 测试

编写单元测试,解释测试驱动开发。这是一种开发方式,也会影响咱们的思惟方式。编写出的代码也更加的解构。

第4章 重构

重构能够说是保持代码质量的重要环节。天天清洁咱们的代码。

第6章 一次编程实践

做者以一次实践来解释上面所阐述的概念。

第二部分 敏捷设计

在这一部分,做者提出了伟大的面向对象五大设计原则。 并提出了什么样的设计是拙劣的,也就是违背设计原则的。

第7章 什么是敏捷设计

源代码就是设计,不须要过多的媒介去描述它。

敏捷设计是一个持续的过程,不是一个事件。持续应用原则、模式改进软件结构和可读性。致力于任什么时候间都尽量的简洁有力。

第8章 单一职责原则(SRP)

就一个类而言,应该仅有一个引发它变化的缘由。

第9章 开放-封闭原则(OCP)

软件实体(类、模块、函数等等)应该是能够扩展的,可是不可修改的。

第10章 Liskov 替换原则(LSP)

子类型必须可以替换掉他们的基类型。

第11章 依赖倒置原则(DIP)

a. 高层模块不该该依赖于底层模块。两者都应该依赖于抽象。 b. 抽象不该该依赖于细节。细节应该依赖于抽象。

第12章 接口隔离原则(ISP)

不该该强迫客户依赖于他们不用的方法。

结束语

接下来还有四章,都是以实际案例,来实践敏捷开发和设计原则。而且提出相应的设计模式。

推荐你们阅读这本经典图书。编写出更加优美的程序。

相关文章
相关标签/搜索