code-review程序员必看幻灯片课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《code-review程序员必看幻灯片课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- code review 程序员 幻灯片 课件
- 资源描述:
-
1、Code Review?为什么要进行Code Review??如何做Code Review??如何使用工具进行Code Review??CheckStyle?FindBugs?PMD?使用工具进行Code Review的局限性?我们可以做得更好1为什么要Code Review为完成一个软件项目需要多个成员的参与,因此存在编码风格和质量上的差异。尽管在一个项目开始之初,团队内部就对编码进行了格式化上的规范,但是在实际 过程中,还是搀杂了许多个人的因素,比如习惯,思维方式等等。在整体的角度上讲,差异存在越多对项目代码的可读性及维护性影响也越大。又由于一些人可能限于水平,在编码过程当中引入了较低级且
2、显而易见的错误,比如,资源没有释放,造成泄漏。这些隐患如果不是通过Code Review来发现和纠正,通过测试是很难发现的。随着时间的推移,积累的问题会逐渐增 多,到一定程度的话就很难再去着手处理。 Code Review可以“防患于未然”,确保质量,也能提高整个开发团队的开发水平。2如何做Code Review?统一的编程规范和设计文档规范 .也会用这些作为Code Review的检查标准?完整的技术架构和技术架构说明或事例,争取能够包含程序编写的各个方面?不定期的Code Review会议及代码讲解3Code Review时间安排Code Review的时间安排可以根据项目大小和周期长短来
3、定,小项目(如3个月内)可以定在10天内一次,大项目(6个月以上)可以在半个月内一次,次数的安排也要讲究,在项目的开始之处应该安排密一些,在项目进展到一定的程度后,周期可以更长,一个月内一次。这种安排出于以下考虑,一是项目成员对项目的 认知在开始阶段比较粗浅,问题较多,因此需要及时的纠正;而当项目成员随着进展而成长后,有很多问题可以为成员自己所避免,因此安排Code Review的次数应该减少。除了纠正错误和问题之外,Code Review可以通过相关人员的参与,来交流一些技巧和宝贵的经验,以讲解和讨论的形式获得提高。4使用工具进行Code Review自动代码复查工具?CheckStyle?
4、FindBugs?PMD代码评审工具?Jupiter(暂不讲解)5CheckStyle简介?CheckStyle:主要用于检查代码规范目前版本5.1, 主站网址http:/ eclipse的插件,插件下载网址是http:/ Checkstyle Plug-in/?工作原理:检查源码,对javadoc,书写格式、基本错误等进行检查.?规则定义:默认的规则是sun的编码规范. 可以自定义规范. 6CheckStyle检查的问题?JavaDoc注释?命名约定?文件头?Imports?长度限制?空格?关键字?对区域(empty block)的检查?编码的检查(魔法数、switch中错误分支)等?重复的
5、代码?各种量度7CheckStyle演示?演示checkstyle使用?查看checkstyle各个视图?演示checkstyle配置?详细讲解checkstyle检查内容,以sun标准为例进行讲解,详见附件 附件Checkstyle4.mht8Javadoc注释?JavaDoc注释 Javadoc Comments/* *Returns an Integer object * holding the value* param s the string to be parsed. * return an Integer * object holding the value * exceptio
6、n NumberFormatException if the * string cannot be parsed. */9命名约定Java中命名采用驼峰命名方式,一般首字母小写其他后面单词首字母大写,如userName。需要注意的是右边有不同类名、接口名首字母也大写如:DateUtil常量所有字母均大写,如:MAXAGE包名都小写,如com.dareway抽象类建议以Abstract 开头10Import?import中避免星号?删除没用的import此项可以通过eclipse中 ctrl+shift+o功能进行处理11长度限制长度限制 FileLength?文件长度默认2000行?每行长度默
7、认80个字?方法长度默认150行?方法的参数个数默认7个12关键字关键字key word?关键字的出现顺序public static final XXX 是对一个常量的声明。如果使用 static public final 就是错误的13编码的习惯检查编码的习惯检查?数组尾巴的逗号如果一个数组定义的右括号 与最后一个元素不在同一行,就需要有一个逗号。比如:int a = new int 1, 2, 3, ; 14编码的习惯检查编码的习惯检查?避免内联(inline)条件判断也就是三目运算符“ ? :”。有的内联条件让代码难以理解,比如: String b = (a=null | a.lengt
8、h1) ? null : a.substring(1); ?equals和hashCode方法检查一个类是否覆写 (override)了equals和hashCode方法,15编码的习惯检查编码的习惯检查?不合适的token很多大牛都建议在 java中不要使用switch;另外,使用c+ 或 c- , + c 或 -c这样的后缀也会让可读性变差。?内部赋值语句如果有人这样写: String s = Integer.toString(i = 2); 是不是很想扁他?16编码的习惯检查编码的习惯检查?魔法数也叫 MagicNumber,非常让程序不可读。比如:sex = 0 表示的什么意思?大多数
9、时候,就连作者本人都要皱眉头想半天,汗所以,这里的?就是一个魔法数。如果这样写就好的多:public static final int MALE= 0;sex = MALE;17编码的习惯检查编码的习惯检查?被更改的循环控制变量比如,一个for循环的 循环数是只应该在 最后的 i+ 中更改的,如果出现以下代码:for (int i = 0; i 1; i+) i+; / 这里是极可能是程序员大意写出来的。则说明,这个循环节有90%是大意,写错了。因为其中的循环控制变量 i 在一个循环中 + 了两次。18编码的习惯检查编码的习惯检查?嵌套的if 层次通过指定来限制 if-else 的嵌套的层次。
10、所谓的“嵌套的if”,是指一个if被包含在另一个if中。下面是嵌套数是?的代码:if(true)if(true) 默认为1,建议可以增加,另外还可以检查try等的嵌套19编码的习惯检查编码的习惯检查?调用父类的clone检查并确认一个类的 clone()方法调用了父类的clone()。?父类的finalize检查并确认一个类的 finalize()调用了父类的finalize()。20编码的习惯检查编码的习惯检查?return 语句的数量限制一个方法中return语句的数量。默认是2。忽略特定的方法(默认是equals())如果return 语句太多,说明某个方法需要实现的功能太多,而且很难阅
11、读。(这个时候就需要重构,建议看看重构的Extract Method 和 Simplifying Conditional Expressions. 两章。 ),不过这个需要因程序而异。21编码的习惯检查编码的习惯检查?参数被赋值禁止对参数赋值。某个方法传递进来的参数,是不允许在该方法中改变值的。比如:public someMethod(String para1) 这个方法中,就不允许出现para1 = “new value”;22编码的习惯检查编码的习惯检查?详尽的变量初始化确保某个class 在被使用时都已经被初始化成默认值(对象是null , 数字和字符是0 , boolean 变量是fa
展开阅读全文