《敏捷软件开发》读书笔记2

来源:互联网 发布:知轻重明得失后面一句 编辑:程序博客网 时间:2024/05/16 11:21

1、 通过一次次的迭代和发布,项目进入了一种可以预测的、舒适的开发节奏。每个人都知道将要做什么,以及何时去做。涉众经常地、实实在在地看到项目的进展。他们看到的不是画满了图、写满了计划的记事本,而是可以接触到、感觉到的可以工作的软件,并且他们还可以对这个软件提供自己的反馈。P20

 

2、 当你能够度量你所说的,并且能够用数字去表达它时,就表示你了解了它;若你不能度量他,不能用数字去表达它,那么说明你的知识就是匮乏的、不能令人满意的。——凯尔文勋爵(英国物理学家),1883P17

 

3、 此外,通过首先编写测试,我们就迫使自己把程序设计为可测试的。把程序设计为易于调用和可测试的,是非常重要的。为了成为易于调用和可测试的,程序必须和它的周边环境解耦。这样,首先编写测试迫使我们解除软件中的耦合(forces us to decouple the software)。P21

 

4、 在项目迭代的初期,会受到用手工的方式进行验收测试的诱惑。但是,这样做使得在迭代的初期就丧失了由自动化验收测试的需要带来的对系统进行解耦合的促进力,所以是不明智的。但在最早开始迭代时,如果非常清楚地知道必须要自动化验收测试,就会做出非常不同的系统框架方面的权衡。并且,正如单元测试可以促使你在小的方面做出优良的设计决策一样,验收测试可以促使你在大的方面做出优良的系统框架决策。P25

 

5、 也许,测试最重要的好处就是它对于框架和设计的影响。为了使一个模块或者应用程序具有可测试性,必须要对它进行解耦合。越是具有可测试性,耦合关系越弱。全面地考虑验收测试和单元测试的行为对于软件的结构具有深远的正面影响。P27

 

6、 每一个软件模块都具有三项职责。第一个职责是它运行起来所完成的功能。这也是该模块得以存在的原因。第二个职责是它要应对变化。几乎所有的模块在它们的生命周期中都要变化,开发者有责任保证这种改变应该尽可能地简单。一个难以改变的模块是拙劣的,即使能够工作,也需要对它进行修正。第三个职责是要和阅读它的人进行沟通。对该模块不熟悉的开发人员应该能够比较容易地阅读并理解它。一个无法进行沟通的模块也是拙劣的,同样需要对它进行修正。P28

原创粉丝点击