降低圈复杂度_第1页
降低圈复杂度_第2页
降低圈复杂度_第3页
降低圈复杂度_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、降低圈复杂度降低圈复杂度需求:代码优化:最近公司要求对代码做整改,其中就涉及到圈复杂度。以前也就接触过时间复杂度,所以不得不去搜一波资料。简述:1.概念:圈复杂度(Cyclomaticcomplexity,CC)也称为条件复杂度,是一种衡量代码复杂度的标准,其符号为V(G)。简而言之,也就是统计代码中条件判断的数量。2.影响因素:*if语句while语句for语句case语句catch语句and和or布尔操作:三元运算符计算方式:*V(G)*=P+1P代表代码中条件判断数量,也就是上面影响因素存在的个数,1代表正常顺序的圈复杂度例:下面圈复杂度为2:while(0.equals(a)if(b!

2、=null)C+;注意:if(a=null&b!=null)圈复杂度为2,因为有两个判断,所以当你处心积虑把两个if条件组合时,圈复杂度并没有改变,改变的是认知复杂度。if-else和if圈复杂度都是1,不要想着只留if去掉else,结果并没有改变条件嵌套和提出不影响圈复杂度计算,例如把if里面的for循环提到外面,结果圈复杂度还是2if转换成三元运算符不影响圈复杂度5降低圈复杂度的目的是为了优化代码,降低维护成本,不要为了降低而强行将代码抽取复杂化6.千万不要改动原来逻辑优化方法:目前只用了几种方法,下面是几个优化的例子尽量使用封装好的util类集合空判断(istMap)Set改前:if(l

3、ist=null|listsize()=0)b+;改后:if(CollectionUtils.isEmpty)b+;关各种流改前:if(stream!=null)trystream.close();catch(IOExceptione)e.printStackTrace();改后:IOUtils.closeQuietly(stream)switch/case转成map改前:switch(a)case1:b=f;break;case2:b=g;break;default:break;改后:Mapmap=newHashMap()map.put(1,f);map.put(2,g);b=map.get(a);提炼函数改前:if(b=null)a=1;elsea=4;改后:publicstaticTgetValueByCondition(booleancondition,TvalueOfTrue,TvalueOfFalse)if(c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论