知识大全 JBuilder 2005代码审查功能体验(2)

Posted 语句

篇首语:愿所行皆坦途,愿所求皆如愿。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JBuilder 2005代码审查功能体验(2)相关的知识,希望对你有一定的参考价值。

JBuilder 2005代码审查功能体验(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   命名风格   取消不良命名习惯    良好的命名风格在遵守Java命名语法之上 对命名提出了更高的要求 良好的命名风格必须遵守以下的命名规则      ) 类或接口必须以大写字母打头      ) 方法 属性 成员变量 局部变量以小写字母打头 且不以 _ 或 $ 打头      ) 常量的所有字母都大写      ) 异常类以Exception结尾     良好命名对应 Naming Style 下的 Naming Conventions 设置项      建立和国际接轨的包名    包名应该用顶级域名打头 如 edu等 或者用国家代码如cn ru等     一般公司和组织都对包名前两级都有严格的规则 如IBM公司的类以 ibm打头 apache以 apache打头 第三级才是具体的项目或产品名称 这样的包命名就象三维网的URL命名一样已经成为了一种国际通用的准则 对此没有作出严格规定的公司 开发负责人应该推动建立起符合这一命名规则的规范     该审查项 默认情况下没有激活 可以通过 Naming Style 下的 Package Name 的设置项激活      避免用过于简单的变量名    除了循环体中的临时变量 及一些没有特殊意义的常见数据类型 应该尽量避免使用一个字符作为变量 那些无特殊意义且常见的数据类型 所选取的单字符变量名必须按表 进行命名     表 变量本身无意义的常见数据类型允许的单字符变量    此外 为了减少潜在的冲突 避免不必要的混淆 不允许以大写域名或国家代码作变量名     代码清单 取有意义的变量名     void method(double d)       int i;    Exception e;    char s;//应该改为c    Object f;//应该改为o    String k;//应该改为s    Object UK;//和英国国家代码相同 应改为其他的名字 如ukObj    Object ;//和域名相同 应改为其他的名字 如obj_        该审查项 在默认情况下没有激活 可以通过 Naming Style 下的 Use Conventional Variable Names 的设置项激活      潜在错误审查   聚焦switch    由于switch流程控制语句语法的特殊性 编写程序时需要特别注意 否则将会埋下祸根 JBuilder从以下 个方面对switch进行审查      ) 有无对前面没有break语句的case从句作标识 根据Sun编码惯例 程序入口点从一个case进入 直接到达下一个case代码段 即前一个case没有对应的break语句时 在跨过的地方必须给出一个显示的注释 表示是特定流程控制的要求 而非无意遗漏 来看下面的代码     代码清单 没有break的case从句     switch (c)     case + :           break;    case :          case n :          case : case \\t :         break;       假设在代码清单 的第 行之前 是因为疏忽而遗漏了一个break语句 第 行之前是逻辑需要而故意不加break语句 则将代码更改为     代码清单 更正的switch代码     switch (c)     case + :           break;     case :           break;    case n :          //继续运行到下面    case : case \\t :           break;       该审查内容对应于 Possible Errors 下的 Break Statement is Missing before Case clause 设置项      ) 在switch中出现非case的标签 在Java语句中有两个标签 即case分支标签 另一个则是语句标签 如果case分支标签语句误删或遗漏了case关键字 则case分支标签将变成语句标签 而编译器无法识别这个错误     代码清单 case分支中缺少case而使标签发生质变     public class CaseLabel       /**点*/    public static final int POINT = ;     /**线*/    public static final int LINE = ;    /**多边形*/    public static final int POLYGON = ;       public String getFigureType (int kind)         String tempName = null;     switch (kind)           case POINT:       LINE://该语句缺少case 编译器将其作为语句标签处理 并不会发生语法错误       //但该方法传入常量LINE时 将转到default分支中 而非到达这晨 故       //应该将该行语句更改为case LINE:       tempName = POINT and LINE ;       break;      case POLYGON:       tempName = POLYGON ;       break;      default:       tempName = UNDEFINE ;          return tempName;           该审查内容对应于 Possible Errors 下的 Non Case Label in Switch statement 设置项      ) 有错误嫌疑的break和continue break和continue用于switch和循环中的跳转控制 break用于提前结束循环以及从switch中退出 break的这种 多态性 使得在循环体中内嵌switch语句时 常会带来一些隐患 即开发者本希望退出外层循环 结果却只退出内层的switch语句而已 JBuilder 对这项内容的审查包括以下方面     switch内嵌于循环体中 且case从句中包含了不位于分支块最后位置的break语句   switch内嵌于循环体中 且case从句既使用了break 又使用了continue 但两者的效果却是一样的   break或continue语句中使用了不必要的语句标签     请看下面的代码     代码清单 有错误嫌疑的break和continue     void scan(char[] arr)       loop:    for (int i = ; i < arr length; i++)         switch (arr[i])           case :case :case :case :case :      // ~ 的数字     case :case :case :case :case :           if (processDigit(arr[i]))             continue loop; //loop语句标签没有必要             else             break; // 该break不会结束for循环 应该使用break loop才可结束循环                 case :case \\t :           processWhitespace(arr[i]);       continue; // 应该使用break而非continue           default:      processLetter(arr[i]);      break;           该审查内容对应于 Possible Errors 下的 Suspicious Break/Continue 设置项      避免对浮点值进行等值逻辑判断    浮点数都是一定精度的数据 由于内部表示的误差 往往字面上相同的两个浮点数 其内部表示也不完全相同 故此应避免对浮点值数进行等值逻辑判断 而应采用逻辑比较判断     代码清单 语句中包含浮点等值判断     void calc(double limit)        if (limit == )//应改为通过和较小值比较来判断 如if(Math abs(limit) < )         System out println( the float point number is exactly );            该审查内容默认未激活可以通过 Possible Errors 下的 Suspicious Break/Continue 设置项来激活审查      添加()清晰化复杂的表达式    写复杂的表达式时不应过度依赖运算操作符的计算优先顺序 而应养成使用 () 的好习惯 当一个逻辑表达式由多个逻辑运算组成时 应该用 () 划分不同的部分     代码清单 用括号清晰化表达式     boolean a b c;      if (a || b && c) //应该替换成if ((a || b) && c)             该审查内容默认未激活可以通过 Possible Errors 下的 Mixing Logical Operators Without Parentheses 设置项来激活审查      字符串比较    Java初学者一个常犯的错误是使用 == 或 != 对字符串进行等值逻辑判断 使用 == 将判断两者否是指向相同的对象引用 而非判断两者是否具有值 应该使用equals()替代     代码清单 用equals()替换 ==      public boolean equals(String s String s )       return s == s ; //应改为return s equals(s );       该审查内容对应于 Possible Errors 下的 Use equals Instead of = = 设置项      规避各种画蛇添足   将布尔变量和布尔值比较    没有必要将布 cha138/Article/program/Java/hx/201311/26776

相关参考

知识大全 JBuilder2005 Struts深度体验之改造

JBuilder2005Struts深度体验之改造  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 JBuilder2005 Struts深度体验之概述

JBuilder2005Struts深度体验之概述  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 JBuilder2005单元测试体验之测试配置

JBuilder2005单元测试体验之测试配置  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在

知识大全 JBuilder X 初体验

JBuilderX初体验  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JBUILDER的版本飞

知识大全 JBuilder2005实现重构之类内部提炼

JBuilder2005实现重构之类内部提炼  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  提炼

知识大全 体验VS.NET 2005的winform新功能

体验VS.NET2005的winform新功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  年

知识大全 JBuilder2005单元测试之JUnit框架

JBuilder2005单元测试之JUnit框架  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 JBuilder2005单元测试之创建测试固件

JBuilder2005单元测试之创建测试固件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在

知识大全 用JBuilder 2005实现重构之认识重构

用JBuilder2005实现重构之认识重构  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  为什

知识大全 JBuilder2005创建开发文档之编写注释

JBuilder2005创建开发文档之编写注释  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  可