知识大全 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单元测试体验之测试配置 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在
JBuilderX初体验 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! JBUILDER的版本飞
JBuilder2005实现重构之类内部提炼 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 提炼
体验VS.NET2005的winform新功能 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 年
JBuilder2005单元测试之JUnit框架 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
JBuilder2005单元测试之创建测试固件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在
用JBuilder2005实现重构之认识重构 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 为什
JBuilder2005创建开发文档之编写注释 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 可