14.提早集成,频繁集成.

“只要没有到开发的末尾阶段,就不要过早的浪费时间去想如何集成你的代码.至少也要等到开发差不多的时候,才开始考虑它,毕竟还没有完成开发,为什么要操心集成的事呢?在项目的末尾,你有充裕的时间来集成代码.”

我们说过,敏捷的一个主要特点就是持续开发,而不是三天打鱼两天晒网似的工作,特别是在几个人一起开发同一个功能的时候,更应该频繁地集成代码.

很多开发者用一些美丽的借口,推测集成的时间.有时不过是为了多写一些代码,或者是另一个子系统还有很多的工作要完成.他们很容易就会这样想:”现在手头上的工作压力够大了,到最后我才能做更多的工作.才能考虑到其他代码.”经常会听到这样的借口:”我没有时间进行集成”或者”我在机器上设置集成环境太费事了,我现在不想做它.”

广告:个人专属 VPN,独立 IP,流量大,速度快,连接稳定,多机房切换,每月最低仅 5 美元

但是,在产品开发过程中,集成是一个主要的风险区域,让你的字系统不停的增长,不去做系统集成,就等于把自己置于越来越大的风险中.世界没有你仍然会转动.潜在的分歧会继续增加.相反,尽可能早的集成也更容易发现风险.这样风险及相关的代价就会相当低.而等的时间越长.你也就会越痛苦.

作者之一Venkat小时候生活在印度钦奈市(Chennai),经常赶火车去学校.想其它的大城市一样.印度的交通非常拥挤.他每次必须在车还没有停稳的时候.就跳上去或者跳下来.但,你不能从站的地方一下子跳上运行的火车.我们在物理课上学习过这种运动规律.而应该是,首先你要沿着火车行驶的方向跑.边跑边抓住火车上的扶手.然后跳入火车中.

软件集成就想这一样.如果你不断地独立开发.忽然有一天跳到集成这一步,千万不要为受到打击而吃惊.也许你自己在项目中就有这样的体会:每次到项目结束的时候都觉得非常不爽.大家需要日日夜夜地进行集成.

阅读 ‧ 电子书库

当你在公司昏天黑地地加班时,唯一的好处就是可以享受到免费的披萨.

独立开发和早期集成之间是具有张力的.当你独立开发时,会发现开发速度更快,生产率更高.你可以更有效地解决出现的问题.但那并不是意味着要你避免或延迟集成(见本页侧边栏).你一般需要每天集成几次,最好不要2~3天才集成一次.

阅读 ‧ 电子书库

当早期就进行集成的时候.你会看到子系统之间的互交和影响,你就可以估算它们之间通信和共享的信息数据.你越早弄清楚这些问题.越早解决它们.工作量就越小.就好比是,刚开始有3个开发者,开发着5万行的代码.

后来是5000个开发者进行3000万行代码的开发.相反.如果你推迟集成的时间.解决这些问题就会变得很难.需要大量和大范围地修改代码.会造成项目延期和一片混乱.

提早集成.频繁集成.代码集成是主要的风险来源.要想规避这个风险.只有提早集成.持续而有规律地进行集成.

切身感受

如果你真正做对了.集成就不再会是一个繁重的任务.它只是编写代码周期中的一部分.集成时产生的问题.都会是小问题并且容易解决.

平衡的艺术

□ 成功的集成就意味着所以的单元测试不停地集成.正如医学院界西波克拉底的誓言:首先,不要造成伤害.

□ 通常,每天要和同队其他成员以前集成代码好几次,比如平均每天5~10次,甚至更多.但如果你每次修改一行代码就集成一次,那效用肯定会缩水.如果你发现自己的大部分时间都在集成,而不是写代码,那你一定是集成得过于频繁.

□ 如果你集成得不够频繁(比如,你一天集成一次,一周一次,甚至更糟),也许就会发现整天在解决代码集成带来的问题.而不是在专心写代码.如果你集成的问题很大.那一定是做得不够频繁.

□ 对那些原型和实验代码,也许你想要独立开发,而不要想在集成上浪费时间.但是不能独立开发太长的时间.一旦你有了经验.就要快速地开始集成.