代码重构中的几个概念
最近使用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
代码重构中的几个概念相关推荐
- php代码重构,Shell在代码重构中的应用了解下
代码重构(Code refactoring)有时是很枯燥的,字符串替换之类的操作不仅乏味,而且还容易出错,好在有一些工具可用,以PHP为例,如:Rephactor,Scisr等等,不过现成的工具往往意 ...
- 说说Shell在代码重构中的应用
说说Shell在代码重构中的应用 出处信息 出处:http://blogread.cn/it/article/3426?f=wb 代码重构(Code refactoring)有时是很枯燥的,字符串替换 ...
- 阿里面试官:你在工作中是如何做代码重构的?
我是猿人,一个热爱技术.热爱编程的IT猿.技术是开源的,知识是共享的! 写作是对自己学习的总结和记录,如果您对 Java.分布式.微服务.中间件.Spring Boot.Spring Cloud等技术 ...
- 【代码重构(Refectoring)系列教程 基本概念二】何时应该重构?如何去重构?
何时去重构 三步原则 当你第一次开发某个模块时,你只是将它完成了. 当你第二次开发某个相似的内容时,尽管你对重复感到厌烦,但你还是要去做相同的工作. 当你第三次开始做这件事时,你就应该 ...
- 把三千行代码重构为15行
2019独角兽企业重金招聘Python工程师标准>>> 如果你认为这是一个标题党,那么我真诚的恳请你耐心的把文章的第一部分读完,然后再下结论.如果你认为能够戳中您的G点,那么请随手点 ...
- CSS代码重构与优化之路
写CSS的同学们往往会体会到,随着项目规模的增加,项目中的CSS代码也会越来越多,如果没有及时对CSS代码进行维护,CSS代码不断会越来越多.CSS代码交错复杂,像一张庞大的蜘蛛网分布在网站的各个位置 ...
- 代码重构的实战经验和那些坑
2012年冬,我在一家创业公司的小团队里搞软件开发.彼时我们有一位真实的企业客户,且软件的第一版也已发布.开发按进度完工,在发布时我欣喜若狂,也非常骄傲,看着系统服务于每天几百万的独立用户,并发送出数 ...
- 手把手教你代码重构,是时候告别屎一样的代码了!
来 源:https://www.jianshu.com/p/3f04b6aebad2 重构不止是代码整理,它提供了一种高效且受控的代码整理技术. (一)重构原则 1.何谓重构 对软件内部结构的一种调整 ...
- python之穿越火线游戏代码_Python实现拼字游戏与代码重构
有位文豪说得好:"看一个作家的水平,不是看他发表了多少文字,而要看他的废纸篓里扔掉了多少." 我觉得同样的理论适用于编程.好的程序员,他们删掉的代码,比留下来的还要多很多.如果你看 ...
最新文章
- Python学习小甲鱼视频003
- vs2010设置boost开发环境
- 他211本硕毕业,一边是年薪15万国企送北京户口,一边是28万大厂offer,究竟该怎么选?...
- 汉诺塔python递归函数_关于python递归函数实现汉诺塔
- 服务机器人---设计中的仿真
- matlab平面抛射方程,MATLAB 数学实验 第七章 微分方程与计算机模拟 PPT注记
- linux shell 宏定义_linux内核修炼之系统调用
- BugkuCTF-PWN题pwn7-repeater详细讲解多解法
- transform.rotation和GetComponentRigidbody().MoveRotation
- 【C语言】【笔试题】实现函数itoa(int n,char s[]),将整数n这个数字转换为对应的字符串,保存到s中...
- 密码技术学习(8.1)-数字证书简介
- kubernetes学习例子
- C++编程-买卖股票的最佳时机
- 局域网内的ARP断网攻击
- C语言并集编程,c语言求并集和交集的关键代码,谢谢
- 拒酒词,好难找哟,留到有用
- 力扣(506.539)补8.22
- python3调用企业微信api!开发一款属于自己的企业微信
- 文科生读计算机博士,文科类哪些专业博士前景好?看完这篇就懂了!
- 如何获得onblur中的值,从onBlur事件中获取新聚焦的元素(如果有)。
热门文章
- Spring MVC+Spring+MyBatis实现支付宝扫码支付功能(图文详解)
- 彻底理解cookie,session,token
- 2018年Spring Cloud中国社区技术沙龙-成都站
- GNN教程:DGL框架实现GCN算法!
- 关于计算机读研的小建议
- 7句话让Codex给我做了个小游戏,还是极简版塞尔达,一玩简直停不下来
- 谷歌创造ImageNet1K新纪录:性能不佳的微调模型不要扔,求一下平均权重就能提升性能...
- 气氛拉满!高校补办2020届毕业典礼,这些专属礼物太戳心......
- 知乎热议:985 计算机视觉研究生找不到工作怎么办?
- 美团架构师开源5万字的《面试手册》PDF免费下载!