对于软件开发团队,Code Review就如svn版本控制一样,是技术管理的常识。因为是常识,所以我们一般会这么想:如何做Code Review?在做好Code Review前,我们是否想过这样一个问题:为什么要做Code Review?
大家都知道,Code Review是基于代码规范的,代码规范是通过可读性、易修改性来解决团队协作、提升项目可维护性。这是浅层次的Code Review,更深层次的Code Review会检查技术和业务逻辑实现的正确、优雅性,类似于黑盒测试。前者可以通过工具,如Java的eclipse、checkstyle,后者如findBugs,但也只是浅层次的技术检查。
我刚开始接触Java时,就非常重视代码的规范、优雅型,完全按照Java Code Convention来,早已形成了习惯。但我发现一个有趣的现象:代码的整洁性和人的性格、行为习惯直接相关,比如办公桌比较乱的人,代码也会天然比较乱(在没有自律情况下);水瓶座的人天性不喜欢约束,代码一般较乱,而处女座的人生性洁癖,代码通常比较整洁。
代码规范无所谓好坏,易读、团队一致认同即可,这是由它的目标(团队协作、可维护)决定的。Java和.Net的规范天然两条线,但一直做MS开发的,肯定会对Java的规范不太适应,但并不能说谁优谁劣。
如何做好Code Review?
在探讨Code Review的得与失前,不妨先谈谈如何做Code Review。
Code Review一般是由项目Leader或高级工程师做,团队内相互检效果并不好(团队内信任建立起来了吗?)。做Code Review的人,一般是对技术很感兴趣、对项目可维护性负责任的人。
Code Review主要针对公司内部项目或产品,这类产品的生命周期较长,可维护性主要是为了降低后期的维护成本(很多项目的开发和运维成本是1:5)。对于外包项目,如果做Code Review,主要是为了改进上线时的质量(客户评审),或者承包方接管了头几年的维护。对于一次性交易的项目,在国内,大多数毫无维护性可言。
因为可维护性是需要人力和时间成本的。而且,国内的软件过程管理,还处于草莽阶段。
我的Code Review经历。
第一阶段 项目开始时,在开发工具eclipse里设置好代码检查模板(共四份),然后和团队其它成员共享,培训如何使用。
第二阶段 项目开发到两周后,开始Code Review,将常见问题汇总,给大家一一剖析。另外还建议看一些书,如《Effective Java》、《Java Pitfalls》。
第三阶段 每周检查两次左右,持续两三周,感觉大家习惯了编码规范,我也就逐渐停止Review,从监督过渡到信任(还是会抽查的)。
代码风格从零开始养成,可能只需一个月;但如果一个人已经习惯了一种风格好几年,再改就很痛苦,这种情况必须尊重人性,就像禁烟也不是几天的事情,这很考验管理者的耐心。
良好编码规范的养成,必须要以态度(心智模式)为基础,只有认识到它的重要性,才可能真正养成;所以,对于技术经理,强调规范的重要性,远远比技术层面的强制执行,效果好得多。就如同质量管理,最核心还是一个态度和责任问题,而不是checklist。
当然了,Code Review时看到的技术能力层面的问题,是不可能几周内改进的。我推崇的解决办法是:辅导和激励,帮助他提升技术兴趣和能力。
为什么要做Code Review?
我上面已经说过了。
这里说到的为什么,可能和我的一段经历有关。从这件事,我才真正思考Code Review的取与舍。
后来项目组来了一位技术牛人,大家知道,牛人都是有性格的。不光是人有性格,而且代码也很有风格。刚开始来的那两周,我也像以前一样,进行Code Review,并且要求他遵守我们的编码规范。刚开始他还配合,后来就有些抵触,因为他就认为他写的代码很优雅,并且,我隐约感觉到他开发效率的降低,干活不太愉快。
在我们之间还没有建立真正的信任时(他认为这也有利于他),他不太会接受我的建议:改进代码风格,用一些更stupid的实现(他的代码太过于灵活)。
那时我面临一种选择:是否该继续推行代码规范?
对商业敏感的人应该会发现,上面的提问就是错误的。真正的问题应该是:代码规范的目标是什么,成本和收益?
再退一步,我们的项目目标是什么,如何让他最大程度地达成项目目标?
问题就开始有答案了。
对于我们这种创业型公司,目前最重要的是让项目上线,接受市场的检验。
重新界定目标后,我又再思考刚才的问题:代码规范的目标是什么,成本和收益?
因为我们有几个子项目是他独立一人开发,至少在当前,不存在代码协作的问题。对于存在代码协作的地方,我在任务分配上做了纵向切割(基于模块)。当然,对于后台ERP,因为是多人开发,所以还是对代码规范要求很严。
如果让他遵守我们的代码规范,势必对他的热情和开发效率有影响(成本),而对项目的进度和质量关系并不大(收益)。对于他负责的几个项目,如果需求稳定后,市场证明可行,重新实现的代价并不大。
其实,项目中遇到的问题,思路都是相通的。比如和这位牛人沟通过程中,发现他对代码性能非常敏感,我的看法是,对于业务系统,改进Java代码的性能,还不如改进数据库的性能(如建立数据冗余、以空间换时间)。通过技术实现改进性能,还不如改进架构和部署(如加入队列和定时任务)。我们必须先从宏观考虑在哪个层面来解决性能问题,然后才是细节层面。
我还半开玩笑地说,如果性能成为瓶颈,比如一天访问人数是10000(非常低了),成单率是1%,也就是100,每个订单3000元,一天销售额30万,一年近一个亿,我可以再请几位技术高手,重新开发、扩展服务器。
我觉得,项目经理最重要的一种能力:如何让有限的资源(人力、资金、时间)效用最大化,也就是分析事物轻重缓急的能力。
好了,就写到这里,这篇文章只是引出一个问题,因为Code Review在项目管理中,只是一个很小的方面,像任务分配(目标管理)、会议(沟通)、工作日志(风险控制)等涉及到人的方面,比这个严峻得多。项目管理,本质上还是基于人的管理(研究人的习性和做事习惯)。
分享到:
相关推荐
**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 ...
在实际使用中,下载的压缩包文件"IntellijIDEA-CodeReview-Plugin-master"包含了插件的源代码,开发者可以对其进行定制或扩展以满足特定团队的需求。安装插件通常包括以下几个步骤: 1. 解压下载的压缩包。 2. 打开...
Code Review是软件开发过程中的一个重要环节,它有助于提高代码质量,发现潜在的错误,以及确保团队成员间的代码风格一致。本文将详细介绍两款Eclipse插件——Jupiter和Reviewclipse,它们是进行Code Review的有力...
Code Review的作用和意义已在很多技术团队内达成共识,可是很多时候并未被有效执行,甚至被认为是一项费时费力的工作。借助一些工具可以更容易,更有效率地来进行Code Review,本文介绍的Jupiter即是其中之一。 ...
CodeReview工具的作用:1.减少评审人的缺陷记录和汇总时间,方便责任人查找问题出处;2.检视完成后生成检查报告,代码作者点击按钮可以直接找到错误处;3.任务责任人修改完成后,直接修改问题状态,组织者按快捷键...
我一直认为CodeReview(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题。包括像Google、微软这些公司,CodeReview都是基本要求,代 我一直认为CodeReview(代码...
在Redmine中,Code Review插件是一个重要的扩展,它致力于帮助开发团队进行代码审查,提升代码质量和团队协作效率。本文将详细介绍如何使用Redmine的Code Review插件。 首先,安装Code Review插件是必要的步骤。...
"Code Review 在 GitHub 上的实践指南" Code Review 是一个非常重要的步骤在软件开发过程中,特别是在开源项目中。通过 Code Review,可以确保代码的质量和可维护性。在 GitHub 上,Code Review 是一个非常流行的...
静态测试方法之代码审查(CodeReview)的清单。代码审查可以帮助提高代码质量,避免由于代码习惯而造成的bug。下面列出的这些要点因该可以作为大部分代码审查的指导,如果是Java应用的话,这些建议应该被视作最佳实践...
code review(程序员必看)code review(程序员必看)code review(程序员必看)
代码审核,是对应用程序源代码进行系统性检查的工作。它的目的是为了找到并且修复应 用程序在开发阶段存在的一些漏洞或者程序逻辑错误,避免程序漏洞被非法利用给企业带来不必 要的风险。
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