最近使用SourceMonitor工具做代码优化,过程中对一些原来耳熟能详的名字现在有点模糊了。这里记录一下。

函数复杂度,这里一般指的是函数圈复杂度。(Function Complexity

概念:

所谓圈复杂度是一种代码复杂度的衡量标准。在软件测试的概念里,圈复杂度“用来衡量一个模块判定结构的复杂程度,数量上表现为独立现行路径条数,即合理的预防错误所需测试的最少路径条数,圈复杂度大说明程序代码可能质量低且难于测试和维护,根据经验,程序的可能错误和高的圈复杂度有着很大关系”。

公式:

计算公式1:V(G)=e-n+2p。其中,e表示控制流图中边的数量,n表示控制流图中节点的数量,p图的连接组件数目(图的组件数是相连节点的最大集合)。因为控制流图都是连通的,所以p为1。

计算公式2:V(G)=区域数=判定节点数+1。其实,圈复杂度的计算还有更直观的方法,因为圈复杂度所反映的是“判定条件”的数量,所以圈复杂度实际上就是等于判定节点的数量再加上1,也即控制流图的区域数。

计算公式3:V(G)=R。其中R代表平面被控制流图划分成的区域数。

函数深度(Block Depth

这个概念在网上没有找到,我在SourceMonitor中试了一下。这里的深度是基于文件来的。比如文件内容如下:

Prize {String (String s1String s2String s3){}(String a){}
}

block depth(0):1

block depth(1):3

函数深度是指嵌套的层数,最外层是0,每增加一层便加一。

转载于:https://blog.51cto.com/mingsuper/1694648

代码重构中的几个概念相关推荐

  1. php代码重构,Shell在代码重构中的应用了解下

    代码重构(Code refactoring)有时是很枯燥的,字符串替换之类的操作不仅乏味,而且还容易出错,好在有一些工具可用,以PHP为例,如:Rephactor,Scisr等等,不过现成的工具往往意 ...

  2. 说说Shell在代码重构中的应用

    说说Shell在代码重构中的应用 出处信息 出处:http://blogread.cn/it/article/3426?f=wb 代码重构(Code refactoring)有时是很枯燥的,字符串替换 ...

  3. 阿里面试官:你在工作中是如何做代码重构的?

    我是猿人,一个热爱技术.热爱编程的IT猿.技术是开源的,知识是共享的! 写作是对自己学习的总结和记录,如果您对 Java.分布式.微服务.中间件.Spring Boot.Spring Cloud等技术 ...

  4. 【代码重构(Refectoring)系列教程 基本概念二】何时应该重构?如何去重构?

    何时去重构   三步原则   当你第一次开发某个模块时,你只是将它完成了.   当你第二次开发某个相似的内容时,尽管你对重复感到厌烦,但你还是要去做相同的工作.   当你第三次开始做这件事时,你就应该 ...

  5. 把三千行代码重构为15行

    2019独角兽企业重金招聘Python工程师标准>>> 如果你认为这是一个标题党,那么我真诚的恳请你耐心的把文章的第一部分读完,然后再下结论.如果你认为能够戳中您的G点,那么请随手点 ...

  6. CSS代码重构与优化之路

    写CSS的同学们往往会体会到,随着项目规模的增加,项目中的CSS代码也会越来越多,如果没有及时对CSS代码进行维护,CSS代码不断会越来越多.CSS代码交错复杂,像一张庞大的蜘蛛网分布在网站的各个位置 ...

  7. 代码重构的实战经验和那些坑

    2012年冬,我在一家创业公司的小团队里搞软件开发.彼时我们有一位真实的企业客户,且软件的第一版也已发布.开发按进度完工,在发布时我欣喜若狂,也非常骄傲,看着系统服务于每天几百万的独立用户,并发送出数 ...

  8. 手把手教你代码重构,是时候告别屎一样的代码了!

    来 源:https://www.jianshu.com/p/3f04b6aebad2 重构不止是代码整理,它提供了一种高效且受控的代码整理技术. (一)重构原则 1.何谓重构 对软件内部结构的一种调整 ...

  9. python之穿越火线游戏代码_Python实现拼字游戏与代码重构

    有位文豪说得好:"看一个作家的水平,不是看他发表了多少文字,而要看他的废纸篓里扔掉了多少." 我觉得同样的理论适用于编程.好的程序员,他们删掉的代码,比留下来的还要多很多.如果你看 ...

最新文章

  1. Python学习小甲鱼视频003
  2. vs2010设置boost开发环境
  3. 他211本硕毕业,一边是年薪15万国企送北京户口,一边是28万大厂offer,究竟该怎么选?...
  4. 汉诺塔python递归函数_关于python递归函数实现汉诺塔
  5. 服务机器人---设计中的仿真
  6. matlab平面抛射方程,MATLAB 数学实验 第七章 微分方程与计算机模拟 PPT注记
  7. linux shell 宏定义_linux内核修炼之系统调用
  8. BugkuCTF-PWN题pwn7-repeater详细讲解多解法
  9. transform.rotation和GetComponentRigidbody().MoveRotation
  10. 【C语言】【笔试题】实现函数itoa(int n,char s[]),将整数n这个数字转换为对应的字符串,保存到s中...
  11. 密码技术学习(8.1)-数字证书简介
  12. kubernetes学习例子
  13. C++编程-买卖股票的最佳时机
  14. 局域网内的ARP断网攻击
  15. C语言并集编程,c语言求并集和交集的关键代码,谢谢
  16. 拒酒词,好难找哟,留到有用
  17. 力扣(506.539)补8.22
  18. python3调用企业微信api!开发一款属于自己的企业微信
  19. 文科生读计算机博士,文科类哪些专业博士前景好?看完这篇就懂了!
  20. 如何获得onblur中的值,从onBlur事件中获取新聚焦的元素(如果有)。

热门文章

  1. Spring MVC+Spring+MyBatis实现支付宝扫码支付功能(图文详解)
  2. 彻底理解cookie,session,token
  3. 2018年Spring Cloud中国社区技术沙龙-成都站
  4. GNN教程:DGL框架实现GCN算法!
  5. 关于计算机读研的小建议
  6. 7句话让Codex给我做了个小游戏,还是极简版塞尔达,一玩简直停不下来
  7. 谷歌创造ImageNet1K新纪录:性能不佳的微调模型不要扔,求一下平均权重就能提升性能...
  8. 气氛拉满!高校补办2020届毕业典礼,这些专属礼物太戳心......
  9. 知乎热议:985 计算机视觉研究生找不到工作怎么办?
  10. 美团架构师开源5万字的《面试手册》PDF免费下载!