(2020年){生产管理知识}代码审查参考文档

上传人:精****库 文档编号:143740366 上传时间:2020-09-01 格式:DOCX 页数:17 大小:353.40KB
返回 下载 相关 举报
(2020年){生产管理知识}代码审查参考文档_第1页
第1页 / 共17页
(2020年){生产管理知识}代码审查参考文档_第2页
第2页 / 共17页
(2020年){生产管理知识}代码审查参考文档_第3页
第3页 / 共17页
(2020年){生产管理知识}代码审查参考文档_第4页
第4页 / 共17页
(2020年){生产管理知识}代码审查参考文档_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《(2020年){生产管理知识}代码审查参考文档》由会员分享,可在线阅读,更多相关《(2020年){生产管理知识}代码审查参考文档(17页珍藏版)》请在金锄头文库上搜索。

1、生产管理知识代码审查参考文档mGlobalInput=null;又如:Stringmsg=;if(.)msg=A;elsemsg=B;这里msg同样属于重复创建,改为Stringmsg=null;1. 变量的作用域Java的局部变量可以定义在函数的任何位置,有部分由c转学java的程序员习惯将变量都定义在函数的顶部,因为在c里只能那样定义。但实际上变量的作用域越短程序的内聚性就越高,耦合性也更低,程序更容易理解,因此在java里应该在使用前才定义变量。2. 局部变量的危害定义过多的不必要的局部变量是造成系统难以维护的原因之一,因为每增加一个局部变量我们就要先化时间去理解这个局部变量的意思,因此

2、我们要减少局部变量的使用。用函数的返回值来替代局部变量是一种有效的办法,这就需要我们用重构的方式从大的函数中提出小的函数,用小函数的返回值来替代原有的局部变量。把大函数分解本身也可以降低程序的耦合度。一、 常量1. 硬编码,将代码写死比较严重的情况是将险种代码写死在程序中,比如:if(21301.equals().这里将“21301”写死会为系统的维护和升级带来很大困难,最好是以险种定义的形式去动态获取险种代码。如果实在描述有困难,可以考虑建立一个Constants常量类,将其以常量的形式定义,这样以后维护只需改动一处即可。业务系统中存在不少的状态标志,比如AppFlag的状态”0”为未签单,

3、”1”为已签单,”2”为保全增人。虽然这些状态的意义日后已没有改动的可能,但直接将”0”、”1”、”2”写在程序里会导致程序可读性差,因此我们同样可以将其定义在常量类中,并加上注释,这样我们不必每次都去翻看文档或pdm,看常量类里的注释就行了。2. 禁用常量接口Java的常量有一种不好的用法,就是将常量定义在Inferface中,这种方使定义的常量在使用时可以省去类名前缀,但会为以后的维护带来麻烦。因此不要试图用继承的方式去使用常量。二、 数组1. 数组的定义数组的定义采用Stringstr=null;的形式,而不是Stringstr=null;2. 数组越界数组越界是比较常见的错误,比如:p

4、rivatevoiddealCont()LCContDBtLCContDB=newLCContDB();(mGrpContNo);tLCContSet=();for(inti=0;i();i+)LCContSchematLCContSchema=(i);LCPolDBtLCPolDB=newLCPolDB();();LCPolSettLCPolSet=();for(intj=0;j();j+)LCPolSchematLCPolSchema=(i);.上面的程序就会产生数组越界,应该把(i);中的i改为j数组越界的错误在编译时不会报错,直到程序运行时才会被发现。有一种方法可以避免此bug的产生,

5、程序改为:privatevoiddealCont()LCContDBtLCContDB=newLCContDB();(mGrpContNo);tLCContSet=();for(inti=0;i();i+)dealPol(i);privatevoiddealPol(LCContSchematLCContSchema)LCPolDBtLCPolDB=newLCPolDB();();LCPolSettLCPolSet=();for(inti=0;i0)for(inti=1;i0)判断多余,将其除去2. 合并重复的代码比如:if(getMoney0)strArr0=本次申请应补交保费+setPrec

6、ision(getMoney),2)+元。;(strArr);elsestrArr0=本次申请应退还保费+setPrecision(getMoney),2)+元。;(strArr);这里(strArr);重复,将其提到if外面合并。六、 条件逻辑控制1. 去除控制标志受结构化程序设计的影响,有人喜欢用boolean型的标志来控制程序的流程,比如:privatebooleancheckMoney()booleanflag=true;if(money0)flag=true;elseflag=false;returnflag;但逻辑标志的使用会降低程序的可读性,当逻辑复杂时修改维护会比较困难,所以改

7、为:privatebooleancheckMoney()if(money0)returntrue;elsereturnflase;或者:privatebooleancheckMonay()if(money0)returntrue;returnflase;2. 位运算符&和|都是位运算符,但它们也可在if语句中进行条件判断,但此时仍是执行的位运算。因为使用&和|容易引起不必要的错误,所以禁止在条件判断中使用位运算符。七、 异常处理1. trycatch语句的滥用java的异常处理机制可以把错误处理程序和正常程序分开,使我们可以更容易进行复杂的错误处理。但异常处理机制容易被滥用,因为大多数的jav

8、a书只是描述了异常机制的语法,而并没有说明什么情况下使用异常。异常之所以是异常是因为其不可预料性,比如我们通过io读取配置文件而文件并不存在,又比如通过jdbc读取数据库服务器却当掉了,这些都是需要我们通过异常机制来处理的情况。而下面的代码对异常的处理是错误的:privatebooleangetInputData(VDatacInputData)tryLCGrpContSchematLCGrpContSchema=(LCGrpContSchema)(LCGrpContSchema,0);catch(Exceptione)(this,接收数据失败);returnfalse;returntrue;

9、因为我们只要看一下getObjectByObjectName的代码就知道这个函数如果处理错误会返回一个null而不是抛出异常,这里的trycatch是没有任何意义的,而且会降低程序的性能,因为对异常的捕获会花去额外的开销。2. 空指针异常NullPointerException是比较常见的错误,因此我们在使用一个对象前一定要确保这个对象已经被创建过了。3. 数据格式化异常使用(Strings)进行数据格式转化时如果数据格式错误会抛出NumberFormatException异常,这个异常继承于RuntimeException,是一个非强制捕获的异常。但从程序的健壮性考虑,如下代码我们最好能进行异常处理:将intbnfGrade=();改为:tryintbnfGrade=();catch(NumberFormatExceptione).因为这里我们并不能保证()返回的一定是可以被格式化为整数的字符串。如果我们有足够的理由确保这里不会产生异常,那么异常处理也可省略,正如前面所说的,异常处理的是不可预料的错误。4. 数组越界数组越界异常同样容易

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号