C#源代码缺陷说明.docx

C#源代码缺陷说明.docx

ID:57587609

大小:70.99 KB

页数:15页

时间:2020-08-27

C#源代码缺陷说明.docx_第1页
C#源代码缺陷说明.docx_第2页
C#源代码缺陷说明.docx_第3页
C#源代码缺陷说明.docx_第4页
C#源代码缺陷说明.docx_第5页
资源描述:

《C#源代码缺陷说明.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C#源代码缺陷说明1.1 资源管理类1.1.1 资源泄漏缺陷描述:实现Idisposable接口的对象使用结束后未调用Dispose方法。缺陷危害:资源泄漏可能导致非托管资源长时间被占用而无法释放,进而可能导致资源耗尽而系统不可用。修复或避错建议:实现Idisposable接口的对象使用结束后调用Dispose方法释放非托管资源或者将实现Idisposable接口的对象放到using语句中。示例1:不规范用法publicvoidExampleFun(stringname){StreamReade

2、rreader=newStreamReader(name);//使用reader对象...}//方法退出前未释放reader对象的资源示例2:规范用法publicvoidExampleFun(stringname){StreamReaderreader=newStreamReader(name);try{//使用reader对象...}catch(Exceptione){...}finally{reader.Close();//Close方法调用了Dispose方法释放reader对象的资源}}

3、示例3:规范用法publicvoidExampleFun(stringname){using(StreamReaderreader=newStreamReader(name)){//使用reader对象...}}1.1 解引用类1.1.1 null解引用缺陷描述:对于值可能为null的引用类型变量,未检查变量是否为null而直接解引用该变量。缺陷危害:null解引用会导致程序抛出NullReferenceException类型的异常。修复或避错建议:在解引用变量前检查变量是否为null并对变量值

4、为null的情况进行处理。示例1:不规范用法publicvoidExampleFun(){strings1=null;strings2=s1.Trim();//null解引用}示例2:规范用法publicvoidExampleFun(){strings1=null;if(s1!=null){strings2=s1.Trim();}}1.2 控制语句类1.2.1 用于控制程序流程的条件表达式为常量缺陷描述:用于控制程序流程的条件表达式的结果恒为真或恒为假。缺陷危害:用于控制程序流程的条件表达式为常

5、量时,代码的部分分支路径永远不会被执行,条件表达式变得毫无意义。当用于控制循环的条件表达式的结果恒为真时,可能导致程序进入死循环。示例:不规范用法publicvoidExampleFun(){strings="";if(s==null)//用于控制程序流程的条件表达式“s==null”恒为假{return;}}1.2.2 “If”语句的“then”分支无语句缺陷描述:“If”语句的“then”分支无语句。缺陷危害:“If”语句的“then”分支无语句通常不是程序的本意。“If”语句的“then”

6、分支无语句通常是遗漏了代码,可能会导致程序出错或程序功能实现不正确。修复或避错建议:补充“then”分支的代码。示例:不规范用法publicvoidExampleFun(booleancond){if(cond){//“If”语句的“then”分支无语句}}1.1.1 “If”语句的“then”分支只有分号缺陷描述:“If”语句的“then”分支只有分号。缺陷危害:“If”语句的“then”分支只有分号通常不是程序的本意。“If”语句的“then”分支只有分号通常是打字错误,可能会导致“If”语

7、句的“then”分支部分的代码在不满足判断条件时也进行执行。修复或避错建议:修复打字错误。示例:不规范用法publicvoidExampleFun(){inta=0;if(a>0);//“If”语句的“then”分支只有分号{a++;}}1.2 运算处理类1.2.1 非法计算缺陷描述:对于某些算术运算的操作数,其取值是受到限制的,如%,/,%=,/=后面的除数都不应该为0。一些数学函数的参数是有定义域的,如果变量的取值范围中包括不合法的数据则会引起异常。如asin,acos,atan2,div,

8、fmod,ldiv,log,log10,sqrt等。缺陷危害:非法计算错误会产生运行时异常处理逻辑,导致未知错误。修复或避错建议:在使用算术运算前应检查操作数或运算参数,判断其是否符合相应的约束,并对不符合的情况进行处理。示例1:不规范用法publicvoidExampleFun(inti){if(i<10){i=20/i;//非法计算}}示例1:规范用法publicvoidExampleFun(inti){if((i<10)&&(i!=0)){i=20/i;}}1.1.1 公共引用类型重载等于

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。