代码复查的形式及优缺点

我们可以发现代码复查的优点显而易见。首先,通过对代码风格与规范的审查,可以大大提高代码的可读性与可维护性。现在的软件,往往需要持续的维护与升级,人员变动也在所难免,因此代码的可读性与可维护性尤为重要。代码复查是一种鞭策,因为它的存在,督促着开发人员自觉地规范编码,养成好的编码习惯,提高代码质量。一个值得注意的问题是,如果你不去读别人的代码,永远不能深刻理解什么是可读的代码,而自己的代码不让别人去读并且反馈,也永远不知道自己的代码是否可读,即使你是一个编码多年的老手。代码复查恰恰解决了这个问题,值得你去尝试。

其次,代码复查是一次程序员之间的交流。新手可以有更多的机会向老手学习和指导,提高自身的设计水平(应当说这对于他们是非常宝贵的);老手通过对新手的指导,整理和升华自己的设计思路与理论,同时也是对自己另一方面的锻炼与提高。另外,当你发现并指出了别人的一个问题以后,同时也是在警示自己不要犯同样的错误,这对审查与被审查者都是有益的。

虽然代码复查有如此突出的优点,但它的缺点也是非常显著的,那就是它需要付出如此巨大的代价。当一个人完成编码以后,还需要另外的人去解读和审查,并要求编程人员完成相应的修改,甚至重构和重写,这本身就是一种巨大的代价。这对于其本身就已经人员和时间非常紧张的软件开发项目来说,无疑是一种雪上加霜。时间、人力与代码质量,其本身就是鱼和熊掌不可兼得,关键是如何去权衡。正因为如此,不同公司选择了不同的代码复查策略。

前不久,我听了韩国一家大型游戏软件公司谈他们的代码复查。由于这家公司在软件开发时,时间和人力不是最关键和紧要的问题而代码质量,所以他们采用了一种严格的代码复查策略。严格的代码复查策略,一种方式是由专人进行代码复查。这种方式,在人员组织形式上,从软件开发人员中单独提出了一些经验丰富的人,组成一个代码复查小组,专职对其它软件开发小组进行代码复查。这种方式,代码复查小组以第三方的身份去复查各个项目组的代码,可以保证复查的公平公正,但压力无疑是巨大的(想想他们要查看那么多的代码)。

另一种方式,是以一个项目开发小组为单元进行代码互查,即一个人的代码,要为小组所有成员进行审查。这种方式毫无疑问,其付出的代价太大了。对这种方式的一种变通方式是将XP中的结对编程进行结合,然结对编程中的两个人相互进行代码互查。采用结对编程的项目组可以尝试这样方式,遗憾的是目前国内采用结对编程的项目组实在太少了。以上两种代码复查的最大弊病就是责任制,即审查者没有太多的责任去发现被审查者的问题,发现了问题对审查者没有任何好处,反倒与被审查者结怨;相反,审查者没有发现问题也不会担负任何责任。这样的结果就导致了代码复查流于形式:审查者草草审查,各方皆大欢喜,问题依然存在。

综上所述,虽然代码复查优势明显,但以上几种形式都不能为普通的软件开发团队所接受,就此我祭出了我的最佳实践:以小组为单位,组长责任制的代码复查形式。

代码复查的最佳实践

代码复查是有代价的,甚至有时是巨大的,因此代码复查不宜频繁,最好一份代码只审查一次。同时,代码复查者应当对所审查的代码负有责任,即能够大胆地审查并指出被审查者的问题,并要求被审查者限期整改。与此同时,被审查后的代码如果还出现缺陷,审查者应当负有责任。只有满足了以上三个条件,代码复查才能为我们所接受。毫无疑问,项目开发小组的组长来担当此责任是最合适的。

一个项目开发组,根据其功能的划分,可以划分为多个小组,每个小组负责一个子模块。在这样一个小组中,小组长无疑是最有经验的开发人员,由他去负责组织和指导其它成员是合适的。小组成员不要太多,往往是3~5人。小组长不要分配太多的开发任务,他的主要工作是指导和监督小组其它成员进行开发。将他从繁重的开发任务中解脱出来,他可以有更多的精力去指导其他成员的设计,并且复查他们的代码。最终,他要对小组所有成员的代码质量负责,由项目经理或质量管理员进行抽查,检验其整体情况。

如果你只是一个小型项目,人员总共在5人之内,那么你不用这样分组。作为项目经理的你就是那个小组长,指导和监督你的成员。这样安排是因为在现代的管理理论中认为,一个人最多只能管理5个人,超过5个人就应当分组管理。而如果你在5人之内当然就不需要分开啦。

作为组长,你可以有效地审查和管理你的小组成员。同时,由于你负有责任,你也不得不认真有效地去完成审查工作。通过以上的组织形式,代码复查可以简便有效地在项目组中开展起来,从而从管理上有效地提高软件开发的代码质量。

你可能感兴趣的:(代码复查的形式及优缺点)