敏捷代码审查指南

简介:

“通过一次真正彻底地代码审查(code reviews),仔细阅读你的代码,找出问题,这是我知道的最好的方式去检测早期的bug,但是他们很少去这样干过。某种意义上是因为他们花了大量的时间去写好代码,但是我认为主要是因为绝大部分程序员害怕其他人审查自己的代码。作为专业的程序员我们要克服阻力,如果你不愿意别人阅读你的代码,然后只是按照自己的意愿写,如果其他人没法读懂它,又怎能让别人使用呢?”Jim Waldo – 《Java语言精粹》的作者

  我强烈赞同code review 是软件生命周期管理中重要的一部分,因为它能帮助我们交付高质量代码、合格作品。

  传统上code review仅是一个形式,通常在代码提交之前由团队负责人或高级程序员负责。在敏捷开发环境中,通过团队合作code review 更系统化,代码的目标和期望应该能用编码指南清晰的定义出来,code review的目标是协同合作,而不是查错。总之code review对整个团队尤其每个程序员都有好处,所以每个人都应该参与进来。

  code review的好处:

  俗话说三个臭皮匠赛过诸葛亮,code review 更易于发现代码bug等问题

  3、保证代码质量以及提高代码可读性

  2、团队之间建立信任

  1、指导初级程序员

  编码标准是独立于语言的,对于Java 程序员来说,我想从以下几个范围来做code review

  Java code review的标准:

  合适的变量声明;如:实例变量还是静态变量、常量等

  9、性能问题;如:当没有线程安全问题时使用ArrayList,HashMap替代Vector,Hashtable

  8、内存问题;如:本应使用对象重用或者对象池时却被不恰当的初始化,没有在finally块中关闭昂贵的资源。

  7、数据访问问题:从数据库一次获取数据太多,请求太多的数据库调用。

  6、线程安全问题;如:Java API类像SimpleDateFormat,Calendar,DecimalFormat等不是线程完全的,在JSP中声明变量也不是安全的,存储状态信息在Struts action类中或者多线程servlet也不是线程安全的。

  5、对错误的处理:异常抛出而没有保持原始模型(希望Java7修复它),没有记录到日志系统中

  4、System.out常被log4j替换

  3、设计问题:没有重用代码,没有清晰的责任分离。如:业务逻辑嵌套在servlet中,而没有使用业务逻辑层,可视化元素(如HTML,CSS)嵌入在后台。

  2、代码文档:没有注释,没有头文件等

  1、从给定的框架中遵循最佳实践:如Spring3中注解替代xml文件对于IOC, 对于每一个简单的部署使用外部属性替代硬编码值等

  你应该为团队做个code review的文档和模板,随着项目的开始同步更新,学习更多你项目中选择的软件。

  工欲善其事必先利其器

  code review 工具:

  3、Crucible 是 Atlassian公司的工具用来不间断处理的审查工作,Crucible能做代码审查而且高度集成在JIRA和FishEye中,支持Subversion、Git等其他类型的VCS。一个通用的例子就是Crucible提供一个转换凭证的工作流,从打开》审查》解决,另一种情景是在代码改变后check- in了之后自动审查。

  2、Gerrit ,Gerrit一个基于web的code review系统。通过Git版本控制系统能方便在线做code reviews。

  1、Checkstyle: 并不只是一个code review 工具,更是一个开发工具确保开发者的代码遵循标准,在每一次code review中节省时间。

  最重要的是,使用Checkstyle能使代码检查成为一个相对简单的任务,你可以把code review 作为日常活动中的一部分而不需要在项目结束的时候才开始,因为那时候项目的交付期限让你的生活一团糟了。








====================================分割线================================



最新内容请见作者的GitHub页:http://qaseven.github.io/

目录
相关文章
|
13天前
|
敏捷开发 监控 数据挖掘
探索自动化测试在敏捷开发中的应用
【4月更文挑战第13天】 随着软件开发流程的不断优化与迭代,敏捷开发模式已经成为业界主流。在此背景下,传统的软件测试方法面临着新的挑战和变革压力。本文将深入探讨自动化测试工具和策略在敏捷开发环境中的应用,分析其对提高软件质量、缩短开发周期和降低人力成本的影响。通过案例分析,阐述如何有效集成自动化测试至敏捷开发的生命周期中,并提出一系列实施建议,以助力团队实现持续集成和持续交付的目标。
|
3月前
|
敏捷开发 人工智能 测试技术
敏捷测试策略
敏捷测试策略
|
3月前
|
敏捷开发 存储 监控
软件测试在敏捷开发流程中的挑战
软件测试在敏捷开发流程中的挑战
|
6月前
|
敏捷开发
Scrum 敏捷开发流程图:敏捷项目实施
​ 敏捷开发中的Scrum流程通常可以用一个简单的流程图来表示,以便更清晰地展示Scrum框架的各个阶段和活动。以下是一个常见的Scrum流程图示例:
|
7月前
|
敏捷开发 BI
敏捷开发SCRUM工具 2
敏捷开发SCRUM工具
97 0
|
7月前
|
敏捷开发 开发框架 测试技术
敏捷开发SCRUM工具 1
敏捷开发SCRUM工具
97 0
|
7月前
|
敏捷开发 开发框架 测试技术
什么是Scrum?如何实施Scrum(敏捷开发)
什么是Scrum?如何实施Scrum(敏捷开发)以及敏捷工具
|
8月前
|
敏捷开发 开发工具 Windows
Scrum敏捷开发工具:提高团队协作与交付效率
Scrum敏捷开发工具:提高团队协作与交付效率
|
9月前
|
敏捷开发 前端开发 持续交付
你不了解的软件开发过程
你不了解的软件开发过程
51 0
|
10月前
|
敏捷开发 数据可视化
用Scrum工具Leangoo领歌做敏捷需求管理
Leangoo领歌是一款专业的敏捷开发管理工具,提供端到端敏捷研发管理解决方案,涵盖敏捷需求管理、任务协同、缺陷跟踪、进展跟踪、统计度量等。我们可以通过Leangoo领歌敏捷工具创建一个产品Backlog看板,来管理敏捷需求。