《构建之法》读后感2
第4章 两人合作 —— 4.3 代码设计规范 —— 4.3.3 错误处理
此处提到了“断言”的概念,但着墨不多,介绍简略。
那么问题来了,挖掘机……不是,断言是什么?
编写代码时,如果程序员相信在程序中的某个特定点某表达式值(布尔式)为真,可将其标为断言(assert)。
举个栗子:
public class AssertionDemo{
public static void main(String[]args){
int i; int sum=0;
for(i=0;i<10;i++){ sum+=i; }
assert i==10;
assert sum>10&&sum<5*10:"sum is "+sum;
}
}
上述程序中语句assert i==10断言i的值为10,如果i的值不为10将抛出AssertionError异常。语句assert sum>10&&sum<5*10:"sum is "+sum断言sum<5*10,如果为false,将抛出带有消息"sum is "+sum的AssertionError异常。
如果肯定某件事一定要发生,则可以使用断言;如果这件事有别的可能,则应用if……else处理。
由于可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新起用断言。
第11章 软件设计与实现 —— 11.2 开发阶段的日常管理 —— 11.2.2 每日构建
这一小节中提到了每日构建的重要性,那么,什么是每日构建?
软件开发是一种集体活动,其中必然面临各成员间的协调、统一问题。银行每天都要对各网点进行清算结账,软件开发也是一样的,必须找到一种方法来衡量每天的工作,保证每天的工作能够有效的持续下去,最终把软件开发的过程变成一种内在的过程。这种方法就称为每日构建或是持续集成。每日构建构建的过程是完全自动化的,通过预先定义好的指令,机器将按照指令顺序执行完所有的构建步骤。它让开发者可以每天进行系统集成,从而减少了开发过程中的集成问题。持续集成可以减少集成阶段"捉虫"消耗的时间,从而最终提高生产力。它使得绝大多数bug在引入的同一天就可以被发现。而且,由于一天之中发生变动的部分并不多,所以可以很快找到出错的位置。对开发人员而言,每日构建带来的好处就是签入即更新。
每日构建虽然会花费一些额外的时间,但是比起最后除错的成本来说,日构建成本是微不足道的。而且更为关键的是能够引入日构建的制度,开发人员将会在日构建的制度下更加频繁的协作,开发进度一目了然,软件的质量也会更加的稳定。软件开发是一项强调沟通和协作的活动,但是在日常的活动中,常常出现阻碍沟通的情况。日构建每一次的构建将会涉及到团队中的所有成员,因此能促进成员的沟通。
在每日构建的驱动下,项目的进度将会变得非常的明显。每一天的构建结果将会通过某个渠道发布出来,团队和团队的老板可以看到软件现在的样子,项目的完成情况,出现的问题等等。这些信息构成了软件开发的基本信息。不但可以清晰地描述出项目进度,也为管理人员安排计划提供了基础数据的支持。有了基本的量化数据,软件开发才不是靠拍脑袋出成果的。
每日构建的最后一个价值是提供了整合性。目前软件开发中并没有一种统一的管理软件,未来似乎也很难做到,因为不同的软件组织差异很大。在开发过程中,一些有价值的实践被加入、集成到每日构建的过程中,在每日构建的推动下,这些优秀实践很容易成为开发过程的一部分。