,Java   工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛,Java
您的位置:软件 > 开发者网络 > 开发工具 > Java > 正文
JBuilder 2005代码审查功能体验
[文章信息]
作者:陈雄华
时间:2005-01-04
出处:天极网
责任编辑:方舟
[文章导读]
代码审查作为JBuilder 2005强大的新特性闪亮登场,直指编码中的软肋
advertisement
热点推荐
· 深入探讨SQL Server 2000对XML的支持
· Swing(空)
· 3DS Stodio Max 宝典
· 中小企业服务器配置方案--前 言
· 中小企业服务器配置方案--代理接入服务器(3)
[正文]

上一页  1 2 3 4 5  

  规避各种画蛇添足

  1、将布尔变量和布尔值比较

  没有必要将布尔变量和布尔值进行比较,应该确保在逻辑表达式中不出现"true"或"false"这两个布尔字面值:

  代码清单 18 避免在逻辑表达式中出现布尔字面值

1. boolean success = init();
2. if (success == true) //应该更正为if(success)
3. {
4.  ...
5. }

  该审查内容对应于"Superfluous Content"下的"Equality Operations on Boolean Arguments"设置项。

  2、无用的成员

  类中private的成员方法和成员变量不可能在外部类中调用,JBuilder 2005 如果发现private的成员变量或方法并没有在内部的protect或public方法中使用,即这个成员永远不会在运行期得到引用,而成为一个无用的成员变量和方法。审查机制将其标识为未使用的成员,并予以报警。

  代码清单 19 无用的成员

1. public class Unuse
2. {
3.  private String name;
4.  public Object value;
5.
6.  private Object getValue()
7.  {
8.   return value;
9.  }
10.
11. private void print()
12.  {
13.   System.out.println(getValue() + " = " + value);
14.  }

15. }

  代码清单19中name变量,getValue()及print()方法都是无用的方法,因为不可能通过外面的类访问到这些成员,Unuse也没有提供调用这些成员的接口,所以这些成员都可以从类中清除。

  该审查内容对应于"Superfluous Content"下的"Member is Not Used"设置项。

  3、多余的接口修饰符

  接口都是抽象的,接口中定义的方法都是抽象且公有,即public abstract;接口中的常量都是public static final的。所以如果在接口定义、接口成员方法及接口常量声明时使用了这些修饰符则是多余的,JBuilder 2005对此作出审查,并报告这些多余的修饰。

  代码清单 20 多余的接口修饰符

1. interface Colors {
2.  public static final int RED = 1;
3.  public abstract void getColorName(int color);
4. }

  代码清单20中粗体的修饰符都是多余的,应该去掉。

  这些审查内容可以通过"Superfluous Content"下的"Obsolete Interface Modifiers"和 "Unnecessary Member Modifier"审查项来设置。

  4、不必要的强制类型转换

  "小类型"到"大类型"及子类到父类自动进行类型转换,无需加上强制类型转换的操作符,JBuilder 2005检查出这些不必要的类型转换。

  代码清单 21 不必要的类型转换

1. class Animal {}
2. class Elephant extends Animal {
3.  void func () {
4.   int i;
5.   float f = (float) i;
6.
7.   Elephant e1;
8.   Elephant e2 = (Elephant) e1;
9.
10.   Animal a;
11.   Elephant e;
12.   a = (Animal) e;
13.  }
14. }

  代码清单21中粗体的强制类型转换语句都是没有必要的,应该取消强制类型转换。

  该审查内容对应"Superfluous Content"下的"Unnecessary type Cast"审查项。

  5、多余的import包引入

  该审查项帮助你构建优化的import语句段,当程序文件中通过import语句引用java.lang.*(编译器自动引入)、当前类所在的包、以及未使用的包或者重复引入包时,JBuilder2005都将进行警告。

  优先import包引入语句最方便方法即是在编辑器中点击右键,在弹出的菜单中选择"Format All"菜单项,自动优化import包引入程序段的代码。可以通过Project->Project Properties...->Java Formating->Import代码格式化设置项完成优化包引入的设置。

  该审查内容对应"Superfluous Content"下的"Import List Construction"审查项。

  其他

  1、无作为的表达式

  无作为的表达式表现在以下两个方面:

  1) 比较表达式总是返回相同的值。

  代码清单 22 表达式产生恒值

1. void handleEvent(Event e){
2.  if (e != null) {
3.   ...
4.   if (e = = null) { // 该表达式的值永远都是false,因为进入这个代码段的e恒为非空
5.    ...
6.   }
7.  }
8. }
9.
10. void putChar(char c, boolean isLetter, boolean isDigit) {
11.  if (isDigit) {
12.   boolean isLetterOrDigit = isLetter || isDigit;//该表达式的值永远都是true
13.   ...
14.  }
15. }

  该审查内容对应"Expressions"下的"Comparison always produces the Same Result"和"Expression Value is Constant"两审查项。

  2) 无效的算术运算。

   当进行加法和减法运算时,有一个操作数是0。

   当进行乘法运算时,乘法或被被乘数为1。

   当进行除法运算时,除数为1。

   当进行取模运算时,左边的操作数的绝对值比右边操作数的绝对值小,此时x%y=x。

   属性赋值时,将本身的值赋给自己。

  代码清单 23 无效的算术运算

1. public class NoEffect
2. {
3.  private String name;
4.  private int index;
5.
6.  NoEffect(String n, int index)
7.  {
8.   this.name = name; //将属性值赋给本身
9.   this.index = index;
10.  }
11.
12. int getPosition()
13.  {
14.   int base = 0;
15.   return index + base; //和0相同
16.  }
17.
18.  int getModule()
19.  {
20.   int x = 1, y = 2;
21.   return x % y;//左边操作数绝对值比右边操作数的小
22.  }
23. }

  该审查内容对应"Expressions"下的"Operation has No Effect"审查项。

  2、流程控制中存在不可到达的语句

  有些流程控制由于测试条件恒为false,则流程中的程序无法到达。

  代码清单 24 不可至的语句

1. int[] arr = new int[size];
2. if (arr == null) //由于arr不为空,则该测试逻辑不可能通过,程序无法进入该程序块中
3. {
4.  return null;
5. }

  该审查内容对应"Branches and Loops"下的"Statement is Unreachable" 审查项。

  3、无用的流程标签

  循环中标注了语句标签,则没用任何地方使用这个标签,即该标签为无用标签,应予以去除。

  代码清单 25 无用的流程标签

1. int findItem(Object[] list, Object item) {
2.  loop: //程序中没有任何地方使用该标签
3.  for (int i = 0; i < list.length; i++) {
4.  if (list[i].equals(item)) {
5.    eturn i;
6.   }
7.  }
8.  return -1;
9. }

  该审查内容对应"Branches and Loops"下的"Label is Not Used" 审查项。

  总结

  JBuilder 2005提供了语法之上的代码审查功能,使用好代码审查功能不但可以增强程序代码的简洁性、可读性,还可以尽早发现潜在的编码错误,防患于未然。

  JBuilder 2005代码审查功能无疑是一项开创性的工作,将对程序开发产生深远的影响,也是智能开发工具的一个发展方向。






上一页  1 2 3 4 5  

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 
,Java相关内容,Java焦点新闻
  • 澄清Java语言接口与继承的本质
  • Java数据对象(JDO)的前世今生
  • Java打印程序设计全攻略
  • 浅谈Java串行端口技术协议
  • 体验Java 1.5中面向方面(AOP)编程
  • FVD刺激高清碟机加速商业化 抢占商机最重要
  • 3家搜索引擎集体诉讼8848 吕春维未敢出席
  • 杨元庆:没有准备不会获批的备用方案
  • 军队信息化诞生新领域 电子军务呼之欲出
  • 世界经济论坛公布信息化程度全球最新排名
  • 2004政务绩效评估:政府门户尚处于发展阶段
  • 甲骨文出资5.15亿美元 意图收购RetekInc
  • 技术并购:帮你突破传统增长的“天花板”
  • ,JavaAdvertisement