本文主要是介绍精准测分:基于函数调用关系链的用例消振算法(上帝视角),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、引言
(1)问题简述:当一个功能用例执行时,背后就会有数以千计的函数被调用运行。其中有与这个功能用例息息相关的业务函数,也有与这个功能用例描述无关的数据上报函数、log日志函数。如何区分什么是核心业务函数,什么是无关函数?
(2)《三体》像我们阐述了这样一个事实:一个文明不会孤立的存在,宇宙有其社会学法则。在这个法则的作用下,一个文明或主动或被动的与其他文明产生关联关系。地球文明不是孤岛。
二、函数孤岛
地球文明不是孤岛,函数呢?从静态的视角观察函数,她只是一个一个在文件中孤立存在的代码片段。但从动态的视角观察,函数与函数之间就天然的发生了关联。这个关联是怎么产生的呢?答案是函数调用关系链。函数调用关系链就是函数自己的宇宙社会学法则,函数不是一个孤岛。我们将这种动态的视角称为—上帝的视角(文中最后部分有解释这个的含义)。
三、问题剖析
函数的宇宙社会学法则导致的用例关联函数问题剖析。
在函数调用关系链的作用下,一个函数或主动或被动的与其他函数产生调用关系。这种调用关系的存在,造成了用例与函数两者在关联的时候,总会出现一系列问题:
1、从函数角度而言,越是基础的公共函数,她被调用的次数就越多,她与其他函数的互相交叉关系就越复 杂。如何将函数关联的用例控制在最能描述这个函数的用例集上呢?且不会关联过多无效的用例。
2、从用例角度而言,用例的设计主要是为几个有限的关联业务函数服务的。但是由于函数调用关系链的影响,用例会被动的关联很多跟他的功能描述不相关的函数。若是这个用例操作步骤很复杂,那么其所调用的函数将呈现爆炸式的递增。如何能够将用例关联的函数控制在核心业务函数范围内呢?
要解决上述两个问题,是否可以借鉴《三体》中挽救人类文明于灭亡边缘的“面壁计划”的思路:既然无法突破宇宙社会学法则,那么就利用、学习她,在绝境中寻求浴火重生的机会。我们是否也可以利用函数调用关系链的规则,制定我们自己的“面壁计划”?答案是肯定的,经过我们团队成员不懈的努力,我们找到了解决上述问题的方式:从调用链的两个不同视角来解决这两个问题:
广度视角:利用函数调用关系链hash值来解决问题1。
深度视角:利用函数调用关系链亲密度值来解决问题2。 <
这篇关于精准测分:基于函数调用关系链的用例消振算法(上帝视角)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!