• 代码审查:好事?坏事?
    时间:2012-11-22   作者:外刊IT评论网   出处:aqee.net

    在软件开发领域,代码审查看起来是一个少有争议、相当平和的话题。

    主流观点普遍认为代码审查是个好东西。有些公司或组织甚至强制要求把代码互审作为必须的流程。

    审查是一种捕捉bug和问题的好措施。通过代码审查能够分享领域知识,提高代码质量。代码审查提供了一个对团队进行监控,教育和强化的好机会。

    至少理论上是这样的…

    当挽起袖子开干,当面对真正的项目计划产生的压力时,代码审查很有可能转而变成一件坏事。

    审查是一种能够导致憎恨和分裂的活动。它能使人对编写的代码是否正确产生怀疑,会激起人们为他们自己的编码标准而宣扬说教。代码审查是一种日常活动,它执行的正确与否带来的是团队的开发效率的提升或是扼杀。

    对于一个团队,有效的代码审查走的是一条中庸的路线——它既不会成为解决一切问题的银弹,也不会成为伤害团队的毒药。

    经过一些思考和跟一些同事讨论之后,我认为,成功的代码审查的关于因素是 信任和训练。

    团队成员必须相信,来自代码审查中的反馈意见并不是对个人攻击或对自己能力的评判。审查者必须相信,受审查者不会因为你提出了改进意见而憎恨你。

    团队成员必须把代码审核看着是一个能不断得到建设性反馈意见的平台,而不是用来对团队成员评分评级或制造消极激进言论的工具。

    当一个团队组成时,信任并不是天生就存在于团队成员中的。

    而训练人们如何正确的展开一次代码审查,可以让人们在审查过程中建立信任。

    所有我呆过的项目团队中,我发现,学习如何正确的做代码审查的方法就是让大家审查自己的代码。这样之后,你才会知道如何给别人做代码审查!这种方法提供了很多真实情景来解释如何进行代码审查。

    训练新手如何正确的提出评审意见,告诉他们应该关注什么才能给有经验的程序员提出有价值的意见。指导团队负责人在合适的时候给予评审者支持,点出有意义的评审意见,这样能强化团队的信任,使团队成员互相尊敬。

    那么,代码审查是好事还是坏事呢?

    这依赖于你的团队的愿望,是否努力把它变成一种积极的措施。就像对于任何这种开发方法论,简单拿过来用是不行的——你必须保证你在以正确的方式用它。

    网友留言/评论

    我要留言/评论

    相关文章

    如何避免重构带来的危险:重构代码很危险,它会给测试工作增加巨大的负担。除非你的程序需要重构,一定不要轻易重构代码。我这里所说的并不是把一个for循环改成while循环,或把一个StringBuffer改成StringBuilder,我说的是大动作,例如重写一个方法,一个函数,甚至整个类或包。如果你缺乏对一个方法或一个类的了解,那你重构它的条件就不充分。即使你有一个天才的计划,你也需要和团队一起设计其中重大的修改。
    Facebook如何提高软件质量?:刘彪是微软测试技术团队的一名软件设计工程师,他在自己的博客上分享了Facebook如何提高软件质量的原则、手段和背后的原因。
    程序员如何保持优秀:优秀便接近成功,金钱和名望比较难以控制。
    关于实施有效站会(Stand-Up Meeting)的三个技巧:通常的站会(tand-Up meetings)的形式总是让我感觉有点怪怪的。它有时会造成一些并不期望的效果。这篇文章里,我将向大家介绍一些在我们blossom公司里经过修改后的站会措施。
    软件项目管理中的“免坑”指南:“谁也无法改变现状,唯有无数程序员血洒大地,才能使项目重建天日。”这一点也不夸张,软件项目做烂了就是个坑,参与者也不过是填坑的。就像是在魔兽世界战场遇到国家队一样,你赢也赢不了,出也出不去。
    如何有效地报告Bug?:自由软件开发者Simon Tatham针对如何有效地报告Bug发表了自己的看法,他列举了一系列拙劣Bug报告的例子,并提出了改正建议。
    项目相关的10点感悟:作过也参与过一些项目,有成功的,有失败的,以下是在我眼里,认为比较重要的一些点,分享出来,也帮自已理理思路!
    社交网络心得50条:金鹏远,1968书吧老板,社交网络实践者
    Fab CEO:我在创办4家公司中学到的90件事:本文来自创意闪购网站Fab的CEO Jason,发表于他的个人博客Betashop。本文中他谈了在创办4家(科技)公司的过程中学到的一些事情,特别总结了Fab从一个同性恋网站转型到现在创意闪购网站过程中学到的一些经验。这些经验对于创业者、投资人、行业从业者都具有很大参考价值。
    主动消费和被动消费:由于工作原因,以下我所说的话只能停留在“道”的层面上,没有具体的做法和实际案例,内容较“虚”。如果您想看到具体的实在的操作层面内容,请止步。