,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  下一页

  使用Jbuilder 2005代码审查

  在默认情况下,JBuilde 2005未激活代码审查的功能,可以通过Project->Project Properties...->Code Audits调用代码审查的设置页,如图1所示:


图代码审查设置

  勾选Code Audits设置页中的"Enable Code Audits"激活当前工程的代码审查功能。Code Audits设置页的左边是一棵代码审查规则项的树,分为两级,第一级为审查规则项的归类,点开第一级的节点,第二级的各节点为具体的一个规则项,可以根据需要勾选可取消这些审查的规则。

  点击规则项,在Code Audits设置页的右边显示出了该规则的详细描述信息并提供了实例,方便开发人员学习和理解。

  在激活代码审查规则后,JBuilder 2005实时地审查编辑器中当前编写的程序文件,并在违反审查规则代码附近的控制槽上标注,违反规则代码的关键处将以一条粉红色的下划波浪线标识出来,此外在结构窗格的Warning文件夹下列出当前程序所有违反审查规则的代码,如图2所示:


图结构窗格中代码审查结果汇总

  审查结果项描述了代码中存在的问题的简要描述,通过这个提示和编译器控制槽上的 标识,点选审查结果项时,编辑器中相应的代码内容将以下划虚线形式显示,通过查看相应的代码,开发人员将能够快速发现问题所在。更正问题后,对应的审查警告将自动从Warning文件夹中清除。

  代码风格审查

  1、"switch"必须带一个default语句

  根据Sun的编码规范,每个switch流程控制语句都必须带一个default分支,以保证逻辑分支的完整性。在默认情况下该审查项未激活,对应的设置项是"Coding Style" 下的"'switch' Statement Should Include a Default Case"。

  代码清单 1 所有switch必须带default分支

1. switch (formatType)
2. {
3.  case 1:
4.   formatStr = "yyyyMMddHHmmss";
5.   break;
6.  case 2:
7.   formatStr = "yyyy'-'MM'-'dd HH:mm:ss";
8.   break;
9.  case 3:
10.  formatStr = "yyyy.MM.dd HH:mm:ss";
11.  break;
12. case 4:
13.  formatStr = "yyyy'年'MM'月'dd HH:mm:ss";
14.  break;
15. default:
16.  formatStr = "yyyy'-'MM'-'dd HH:mm:ss";

17. }


  如果没有第15~16行的default代码,代码审查将给出警告。

  提示:

  可以通过Ctrl+J 调用switch代码模板录入的switch流程控制语句代码块将带一个default分支,这样,不但加速了编码的录入效率还保证了代码块的规范性。

  2、应通过类名引用静态成员

  类中所有的静态方法或变量都应该通过类名来引用,如果通过类的实例来引用这些静态的成员将影响到程序的可读性。如果通过类名来引用静态变量,将容易分辨出这些成员的静态属性。因为类静态成员变量在JVM中仅存在一份,而非每个对象实例各自一份,因此静态成员变量可以看成类的成员。

  代码清单 2 关于静态成员的引用

1. public class ASMO1
2. {
3.  void func()
4.  {
5.   ASMO1 obj1 = new ASMO1();
6.   ASMO2 obj2 = new ASMO2();
7.   obj1.attr = 10; //应更正为ASMO1.attr
8.   obj2.attr = 20; //应更正为ASMO2.attr
9.   obj1.oper(); //应更正为ASMO1. oper();
10.   obj2.oper(); //应更正为ASMO2. oper();
11.  this.attr++; //应更正为ASMO2. attr++;
12.  this.oper(); //应更正为ASMO2 oper();
13. }
14.
15. static int attr;
16. static void oper()
17. {}
18. }
19.
20. class ASMO2
21. {
22.  static int attr;
23.  static void oper()
24.  {}
25. }

  该审查规则对应的设置项是"Coding Style" 下的"Accessing Static Members by the Descendant Class Name"。

  3、避免复杂晦涩代码

  往往有些程序员热衷于将Java的语法发挥到极致,以资其对Java语法精通的凭据。如果是为了练习语法、理解语法,无可厚非。但如果在需要充分协作沟通的软件项目中,简洁明了,清晰易懂将会受到推崇,晦涩难懂的语句将会受到奚落。

  故此,大部分的软件公司的规范都对语句的精简明了提出了要求。JBuilder 2005代码审查可以在一定程度上帮助公司落实和贯彻这一要求。

  代码清单3演示了晦涩的赋值语句及替代的写法:

  代码清单 3 复杂晦涩的赋值语句

1. int i = 0;
2. int j = 0;
3. int k = 0;
4. int l = 0;
5. i *= ++j;
6. //应更改为:
7. //++j;
8. //i *= j;

9.
10. k = j = 10;
11. //应更改为:
12. //k = 10;
13. //j = 10;

14.
15. l = j += 15;
16. //应更改为:
17. //j += 15;
18. //l = j;

19.
20. i = j++ +20;
21. //应更改为:
22. //i = j + 20;
23. //j++;

24.
25. i = (j = 25) + 30;
26. //应更改为:
27. //j = 25;
28. //i = j + 30;

29.
30. i = j++ + 20;
31. //应更改为:
32. //i = j + 20;
33. //j++;

34.
35. i = (j = 25) + 30;
36. //应更改为:
37. //j = 25;
38. //i = j + 30;

  JBuilder 2005 初始状态下没有激活对复杂的赋值语句的审查,该审查内容对应"Coding Style"下的"Complex Assignment"设置项。

  除需要注意赋值语句外,由于for循环控制语句的高度灵活性,所以for()中的代码往往是复杂晦涩代码的乐园,在for语句中以逗号分隔的赋值语句最多不应超过3个:

  代码清单 4 复杂的for语句

1. for (i = 0, j = 0, k = 10, l = -1; i < 10; i++, j++, k--, l += 2)
2. {
3.  //do something
4. }
5. //应改写成下面的样式
6. //l = -1;
7. //for (i = 0, j = 0, k = 10; i < cnt; i++, j++, k--)
8. //{
9. // //do something
10. // l += 2;
11. //}

  该审查内容对应对应"Coding Style"下的"Complex Initialization or Update Clauses in 'for' Loops"设置项。

  4、尽量使用赋值运算符

  在可能的情况下使用赋值运行符(=, /=, %=, +=, -=, <<=, >>=, >>>=, &=, ^=, 和|=),因为这些语句能够提高编码录入的速度,增强代码的简洁性,同时赋值运行符使某些编辑器运行得更快。

  代码清单 5 使用赋值运行符

1. void oper () {
2. int i = 0;
3. i = i + 20;
4. i = 30 * i;
5. }
6. //应改写成
7. //void oper ()
8. //{
9. // int i = 0;
10. // i += 20;
11. // i *= 30;
12. //}

  该审查内容对应"Coding Style"下的"Use Abbreviated Assignment Operator"的设置项。

  5、其他代码风格的审查

  1) 不应将多行语句写在同一行代码中。该审查内容对应"Coding Style"下的"Multiple Statements on One Line"设置项。

  2) 代码块应以"{}"框起来,虽然增长了代码,但代码结构性更强。该审查内容对应"Coding Style"下的"Place Statement in Block" 设置项。

  3) 声明长整型使用大写的"L",而非小写的"l",因为后者和数字1相似。该审查内容对应"Coding Style"下的"Use 'L' instead of 'l' at the End of Integer Constants"设置项。

  代码清单6说明了上述的审查项:

  代码清单 6 其他代码风格的审查

1. i++;
2. j++;
3. //应更改为
4. // i++;
5. // j++;

6.
7. if (val < 0)
8.  return;
9. while (val >= 10)
10. val /= 10;
11. //应更改为
12. //if (val < 0)
13. //{
14.  // return;
15. //}
16. //while (val >= 10)
17. //{
18.  // val /= 10;
19. //}

20.
21. void func () {
22.  long var = 0x0001111l;
23. }
24. //应更改为
25. void func () {
26.  long var = 0x0001111L;
27. }

  此外,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