曾经有一段垃圾代码放在我的面前,我没有拒绝,等我真正开始接手的时候我才后悔莫及,程序员最痛苦的事莫过于此!---------改编于周星星的经典台词。
虽然有点夸张,但编码界确实大大存在这种情况,每当接手别人的代码,都有一种想重新写一遍的感觉,等到别人再来接手你的代码时,同样的感觉。。。为什么会有这种现象存在?因为没有Code Review
一。前言
Code Review中文应该译作"代码审查"或是"代码评审",也叫代码QC,这是一个流程,当开发人员写好代码后,需要让别人来review一下代码,这是一种有效发现BUG的方法。review之后,可以发现代码的风格、逻辑、思路等问题。然后改进代码,提高代码质量。因为这是代码刚刚出炉的时候,所以,这也是代码调整、代码修改、代码重构的最佳时候。所以,Code Review是编码实现中相当重要的一个环节。
二。Code Review的内容
1.编程素养
见码如见人,代码风格在一定程度上反应一个程序员的能力和素养,如代码风格、注释、变量的命名、缩进、初始值、方法的长度、流是否关闭、连接是否关闭
2.业务逻辑
代码实现的过程,就是对需求理解的一种复现,如果业务逻辑都错了,代码写得再漂亮、再牛B也是枉然
3.架构设计
业务逻辑实现了,只能给60分,代码是否具有高内聚、松耦合、可扩展的特性?是否合理设计模式?
4.单元测试
没有经过单元测试的代码,不是好代码。大多数开发人员认为,测试的环境是测试人员做的事,不然要测试人员做甚?其实不然。
单元测试是一种无价的文档,它是展示方法或类如何使用的最佳文档。这份文档是可编译、可运行的,并且它保持最新,永远与代码同步。
单元测试也是架构设计的一部分,迫使我们在设计时把代码设计成可调用、可测试,从而降低代码的耦合。自动化的单元测试避免了代码出现回归,编写完成之后,可以随时随地的快速运行测试。
5.性能
对数据结构的选择和设置是否合适?
是否采用通用的线程池、对象池模块等cache技术以提高性能?
是否选择合适的IO类或采用良好的方法以提高性能?
同步方法的使用是否得当,是否过度使用?
6.安全
是否有后门?
如果是web页面,是否有csrf、xss漏洞?
是否明文存储了用户名密码?
日志中是否打印了敏感信息?
三。review的方式
1.借助软件,软件请看第四点。
建议开发人员都安装这些插件,发现问题时及时就改了
2.项目负责人或架构师review
晚上review是最好的时机,一般没有人打扰,没有会议,我一般选择这个时候
3.开发人员两两互review
开发人员两人一组,一天一次,review当天的代码。但过于频繁,久而久之就成了过场,然并卵。。。
4.开发人员在会议室review,个人更倾向于这种
代码review最好采用小会议室,开发人员一起review,时长一小时最好,不宜过长,在开发阶段一周一次review。讲解人(开发人员)选取自己本迭代做的某个功能点,先讲业务,然后讲架构、实现过程、再讲代码,期间有问题时可以随时打断,听众提问,讲解人一一作答。个人更倾向于这种。
四。常用的review软件
在敏捷开发中,每个迭代的工作量大概在两三周左右,代码量不是很多,但是如果要项目负责人或架构师一一QC所有开发人员的代码,也是个不小的任务,所以,往往需要借助第三方工具。
1.checkstyle
这是一个代码风格的检查工具,要求过于苛刻,一般很难让所有开发人员都按这个标准来。
2.PDM
这是一个静态代码扫描工具,直接扫描java源码,可以发现很多重复的代码、未使用的代码、复杂的表达式、潜在的bug。
3.findbugs
直接操作class文件而不是源码,着重于发现代码中的bug,不注重style及format
五。注意事项
1.代码review应该在良好的气氛中进行,这不是批判大会,不应有人身攻击,应就码论码。
2.代码review的目的是提前发现问题的好时候
3.代码review可以让知识共享,是互相学习的好机会
4.代码review能防止某个开发人员单点,让更多的了解他的代码,当他请假或离职,不至于手忙脚乱,有效HA
5.代码review一定要有记录,完事后发出会议纪要给所有开发人员,限期整改,项目负责人或架构师在上线前再次review
六。后记
从开发人员来看,代码review会逐步让TA改正不好的习惯,提高编码、设计、架构能力,从而走向人生巅峰,迎娶白富美,哈哈。。。
从团队来看,能改善工作氛围、提高团队的凝聚力。
从项目来看,可以提前发现问题,减少bug,提高稳定性,不再到处救火。
相关推荐
**Source Insight CodeReview宏**是专门针对Source Insight这款强大的源代码查看和编辑工具设计的一套扩展功能,主要用于代码评审和统计。Source Insight以其强大的代码导航、语法高亮和实时分析能力,深受程序员...
Employing lightweight, tool-based code review of code changes (aka modern code review) has become the norm for a wide variety of open-source and industrial systems. In this paper, we make an ...
Code Review是软件开发过程中的一个重要环节,它有助于提高代码质量,发现潜在的错误,以及确保团队成员间的代码风格一致。本文将详细介绍两款Eclipse插件——Jupiter和Reviewclipse,它们是进行Code Review的有力...
在实际使用中,下载的压缩包文件"IntellijIDEA-CodeReview-Plugin-master"包含了插件的源代码,开发者可以对其进行定制或扩展以满足特定团队的需求。安装插件通常包括以下几个步骤: 1. 解压下载的压缩包。 2. 打开...
Code Review的作用和意义已在很多技术团队内达成共识,可是很多时候并未被有效执行,甚至被认为是一项费时费力的工作。借助一些工具可以更容易,更有效率地来进行Code Review,本文介绍的Jupiter即是其中之一。 ...
CodeReview工具的作用:1.减少评审人的缺陷记录和汇总时间,方便责任人查找问题出处;2.检视完成后生成检查报告,代码作者点击按钮可以直接找到错误处;3.任务责任人修改完成后,直接修改问题状态,组织者按快捷键...
我一直认为CodeReview(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题。包括像Google、微软这些公司,CodeReview都是基本要求,代 我一直认为CodeReview(代码...
在Redmine中,Code Review插件是一个重要的扩展,它致力于帮助开发团队进行代码审查,提升代码质量和团队协作效率。本文将详细介绍如何使用Redmine的Code Review插件。 首先,安装Code Review插件是必要的步骤。...
静态测试方法之代码审查(CodeReview)的清单。代码审查可以帮助提高代码质量,避免由于代码习惯而造成的bug。下面列出的这些要点因该可以作为大部分代码审查的指导,如果是Java应用的话,这些建议应该被视作最佳实践...
代码审核,是对应用程序源代码进行系统性检查的工作。它的目的是为了找到并且修复应 用程序在开发阶段存在的一些漏洞或者程序逻辑错误,避免程序漏洞被非法利用给企业带来不必 要的风险。
source insighet 集成code review,代码审核时非常好用,使用起来比较简单,加入工程,同步,添加快捷键,使用快捷键即可正常使用,保存即可。
### CodeReview中的常见代码问题分析 #### 一、引言 在软件开发过程中,CodeReview(代码审查)是一项至关重要的活动。它不仅有助于提高代码质量,还能促进团队成员之间的知识共享和技术交流。本文将深入探讨Code...
C++代码 Code Review时使用的检查清单和问题记录模板
Steven Code Review 2009.12M1发布包.rar 代码在线审查工具 @date: 2009-12-28 @author: YF @email: yifi@tom.com 功能: 1 方便学员学习教师的代码,无需在本机运行IDE即可以代码加亮的方式查看服务器共享的代码...
`CodeReview.em`可能是一个包含了代码审查过程记录或结果的文件,而`codereivew.docx`可能是详细的代码审查报告,其中可能详细列出了审查过程中发现的问题、建议的修改以及后续的行动计划。通过这两个文件,团队成员...
软件介绍: 一、软件特色 功能丰富:实现文件内容、度量、命名、注释、类图、Halstead等审查。 简单易用:无需安装,直接使用,直接删除;... 直观可视:分析结果与源代码在同一界面显示对照,...http://www.codereview.com.cn
漫谈codereview,关于review的一些基础知识和总结。
zyh-code-review.rarzyh-code-review.rarzyh-code-review.rarzyh-code-review.rar
标题:Code Review Tool from Google 描述:Code review on the web 根据给定的文件信息,我们可以提炼出关于代码审查(Code Review)及其在谷歌开发流程中的应用的关键知识点。 ### 什么是代码审查? 代码审查...