|
|
51CTO旗下网站
|
|
移动端

43 准备好后再共享代码

《高效程序员的45个习惯:敏捷开发修炼之道》本书总结并生动地阐述了成为高效的开发人员所需具备的 45个习惯、思想观念和方法,涵盖了软件开发进程、编程和调试工作、开发者态度、项目和团队管理以及持续学习等几个方面。本节为大家介绍准备好后再共享代码。

作者:钱安川/郑柯 译来源:人民邮电出版社|2010-03-04 08:57

43 准备好后再共享代码

"别管是不是达到代码签入的要求,要尽可能频繁地提交代码,特别是在要下班的时候。"

让你猜个谜语:相对不使用版本控制系统,更坏的状况是什么?答案是:错误地使用了版本控制系统。使用版本控制系统的方式,会影响生产力、产品稳定性、产品质量和开发日程。特别地,诸如代码提交频率这样简单的东西都会有很大影响。

完成一项任务后,应该马上提交代码,不应该让代码在开发机器上多停留一分钟。如果代码不能被别人集成使用,那又有什么用处呢?应该赶紧发布出去,并开始收集反馈。

很明显,每周或每月一次提交代码,并不是令人满意的做法--这样源代码控制系统就不能发挥其作用了。也许总有种种原因来为这种懒散的做法解释。有人说开发人员是采取异地开发(off-site)或离岸开发(offshore)的方式,访问源代码控制系统的速度很慢。这就是环境黏性(environmental viscosity)的例子--把事情做糟要比做好更容易。很明显,这是一个亟待解决的简单技术问题。

另一方面,如果在任务完成之前就提交代码又会如何?也许你正在开发一些至关重要的代码,而且你想在下班回家晚饭之后再继续开发。要想在家里得到代码,最简单的方式就是将其提交到源代码控制系统,到家之后再把代码签出。

向代码库中提交仍在开发的代码,会带来很多风险。这些代码可能还有编译错误,或者对其所做的某些变化与系统其他部分的代码不兼容。当其他开发者获取最新版本的代码时,也会受到这些代码的影响。

通常情况下,提交的文件应该与一个特定的任务或是一个bug的解决相关。而且应该是同时提交相关的文件,并注有日志信息,将来也能够知道修改了哪些地方,以及为什么要做修改。一旦需要对变更采取回滚操作,这种"原子"提交也是有帮助的。

要保证在提交代码之前,所有的单元测试都是可以通过的。使用持续集成是保证源代码控制系统中代码没有问题的一种良好方式。

代码不执行提交操作的其他安全选择

如果需要将尚未完成的源代码传输或是保存起来,有如下选择。

使用远程访问。将代码留在工作地点,然后在家里使用远程访问获取,而不是将完成了一半的代码提交,再从家里签出。

随身携带。将代码复制到U盘、CD或DVD中,以达到异地开发的目的。

使用带有底座扩展的笔记本电脑。如果是由于在多台电脑上开发造成的延续性问题,不妨考虑使用带有底座扩展的笔记本电脑,这样就可以带着代码到处走了。

使用源代码控制系统的特性。Microsoft Visual Team System 2005有一个"shelving"特性,因为有些产品的某些代码在提交之前,需要被其他部分调用。在CVS和Subversion中,可以将尚未允许合并到主干的代码,设定为开发者的分支(查看[TH03]和[Mas05])。

准备好后再共享代码。绝不要提交尚未完成的代码。故意签入编译未通过或是没有通过单元测试的代码,对项目来说,应被视作玩忽职守的犯罪行为。

切身感受

感觉好像整个团队就在源代码控制系统的另一端盯着你。要知道一旦提交代码,别人就都可以访问了。

平衡的艺术

有些源代码控制系统会区分"提交"和"可公开访问"两种代码权限。此时,可以进行临时的提交操作(比如在工作地点和家之间来回奔波时),不会因为完全提交未完成的代码,而让团队的其他成员感到郁闷。

有些人希望代码在提交之前可以进行复查操作。只要不会过久拖延提交代码的时间就没有问题。如果流程的某个部分产生了拖延,那就修正流程吧。

仍然应该频繁提交代码。不能用"代码尚未完成"作为避免提交代码的借口。

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

网络技术应试辅导(三级)

本书根据教育部考试中心2004年最新发布的《全国计算机等级考试大纲》编写,针对计算机等级考试三级网络技术各方面的考点进行讲解和训练。本...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊