据调查显示,代码审查工作有助于提高软件开发质量,然而许多开发者却不愿意在他们的团队中实施代码审查工作,本文主要分析了开发者为什么会抵制代码审查工作的原因以及为什么他们会有此想法,目的是为了引导开发者加入代码审查工作。
代码审查究竟是什么样的工作呢?通常情况下它是指否决质量的一种过程。大量统计数据表明代码审查极大的提高了软件质量以及降低了技术风险,不仅如此,它还降低了开发成本。
一起来看下代码审查工作所带来的好处:
如图所示,代码审查工作带来这么多的益处,那为什么还有一些开发团队拒绝这一做法呢?我们一起来分析下原因:
![](http://support.smartbear.com/images/blog/better-code-infograph/smartbear-infographic_better-code-starts-with-review-large.jpg)
文化问题或许已成为一种巨大的障碍,大部分开发者会厌恶代码审查是因为他们无法忘记那些痛苦的审查会议,更槽糕的是,他们害怕因劣质代码而遭到管理 者的批评与指责(这个通常是管理者自身的原因,而不是坏代码)。代码审查工作有助于提升团队自身能力,我们应该持积极态度,而不是为了找机会来贬低同伴。
另一种可能性,当大家相互协作、积极互动时,管理者会误认为大家在“聊天”。敏捷性团队已经意识到快速创建软件工作需要积极的互动与协作。他们认为坚持代码审查工作,是通向成功的秘诀。
第三种可能性误解,开发者利用静态分析工具来查找bug,以致代码审查工作成为不必要性。然而事实并非如此,Capers Jones,一位软件质量度量领域的巨人,曾发表过一篇文章“结合视察、静态分析和测试能消除影响效率缺陷的95%”,这种三叉戟式的方法最能确保软件质量。
静态分析只是其中的一个分叉。
静态分析工具有着很大的局限性,包括无法辨认出一些疑似代码,比如,静态分析工具不具备标记功能,因为它无法确定一个函数名为getRandomNumber是否应该总返回相同的值(with a hat tip toXKCD)。
1
2
3
4
5
|
Int getRandomNumber()
{<
return 4;
}
|
也许代码审查最大障碍是恐惧。开发者担心错过最后期限,害怕分心,害怕投入过多时间。要知道,这些都是愚蠢的想法,代码审查的目的是在前端开发过程中最大限度的提高代码质量以及帮助你缩短开发周期。
最后,我认为,调用一个进程(代码审查工作)能够促进团队合作,提供指导且有助于技能的发展,鼓励开发者熟悉代码的基础部分,最终可达到提高整个软 件质量。当然,如果您想快速输入代码,可以考虑一些代码审查工具,前提是,你要确保该工具是轻量级并且有趣。一旦你习惯了使用该工具便有了依赖性(许多使 用代码审工具用户都这么认为)“我们无法想象没有编码工具的日子”,我想你会发现它们的价值所在。
无论如何,请记住,拒绝代码审查是不可取的。
英文出自:softwarequalityconnection
转载自 伯乐在线 http://blog.jobbole.com/16416/
分享到:
相关推荐
- 代码检视:AI可以辅助开发人员进行代码审核,例如谷歌的Tricorder平台,它是一个程序分析平台,构建数据驱动的生态系统,能够展示分析结果在代码检视界面上,并集成大量代码检查工具。 - 代码修复和代码合成:在...
21. **代码审查**:通过代码审查减少对修改旧代码的抵触,提升代码质量。 22. **团队建设活动**:定期组织团队活动,提高团队士气和凝聚力。 23. **项目标识**:创建项目特有的标志或口号,增强团队归属感。 以上...
2. 开发人员抵触频繁测试,可能无法深入发现系统问题。 3. 测试人员缺乏流程化理念,易导致测试的随意性和质量问题的遗漏。 三、软件测试的目标与局限性 测试的主要目标是发现软件错误,而非保证软件无缺陷。然而...
2. 自动化设计与编码:设计和编码阶段可以使用各种自动化工具来生成代码、进行代码审查、静态代码分析和自动化测试,这不仅提高了代码质量,还加快了开发速度。 3. 自动化测试:自动化测试可以模拟真实环境,对软件...
由开发人员进行,结果往往比较实际。 算法模型估计是算法模型就是资源模型,该模型应该是根据历史数据导出的,所以比较客观。关键是选好适用的模型。常与前两种方法结合使用。 费用估计技术包括代码行技术和任务...
其他成员可能包括来自不同部门的专业人士,如开发人员、测试人员、产品经理等,他们共同参与并贡献于过程改进。人力资源的配置应根据改进需求进行,确保每个角色都有清晰的责任和期望。 **3. 其它资源** 除了人力...
- **配对编程(Pair Programming)**:两名开发人员共同使用一台计算机工作,一名编写代码,另一名审查。 - **Scrum**:一种迭代和增量的敏捷软件开发框架,包含固定长度的迭代周期(Sprint),以及Sprint计划会议、...
Additionally, I use tools like JUnit and SonarQube to automate testing and maintain high-quality standards."例如:“我遵循严格的编码规范,进行详尽的单元测试,并邀请同事参与代码审查,以便尽早发现潜在...