你有莫得见过那种长达几百行、逻辑纵横交叉的“巨无霸”函数?那样的函数不光难读,改起来相通贫苦重重cosplay 足交,东说念主东说念主唯恐避之不足。 编写函数最遑急的原则即是:别写太复杂的函数。那什么样的函数工夫算是过于复杂?一般领路过两个圭臬来判断,长度和圈复杂度。 长度 长度也即是函数有几许行代码。不外不可果断地说,长函数就一定比短函数复杂。因为在不同的编程作风下,相通业数的代码所结束的功能可以有盛大分袂,有东说念主甚而能把一个完竣的俄罗斯方块游戏塞进一滑代码内。 但即便如斯,长度对于判断函数复杂度来说仍然有盛大价值。在文章《代码大全(第 2 版)》中,Steve McConnell 提到函数的理念念长度规模是 65 到 200 行,一朝逾越 200 行,代码出现 bug 的概率就会显耀加多。 对于 Python 这种强证实力的谈话来说,65 行也曾终点值得警惕了。假如你的函数逾越 65 行,很大略率代表函数也曾过于复杂,承担了太多管事,请议论将它拆分为多个小而浅易的子函数(类)吧。 圈复杂度 “圈复杂度”是由 Thomas J. McCabe 在 1976 年坑诰的用于评估函数复杂度的蓄意。它的值是一个正整数,代表智商内线性孤独旅途的数目。圈复杂度的值越大,示意智商可能的引申旅途就越多,逻辑就越复杂。 要是某个函数的圈复杂度逾越10,亚洲色网就代表它也曾太复杂了,代码编写者应该念念观点简化。优化写法或者拆分红子函数王人是可以的遴荐。接下来,咱们通过骨子代码来体验一下圈复杂度的计算过程。 在Python中,可以通过radon器具计算函数的圈复杂度。装配敕令: 假定咱们有段代码示举例下,结束的功能是猜数字游戏,内部有1个whilie和2个if-else分支判断逻辑,文献名:complex_func.py。 接下来咱们使用radon来计算这个文献对应函数的圈复杂度,文献名:calculate_cyclomatic_complexity.py 引申着力:可以看到函数圈复杂度为 4。 $ python3 calculate_cyclomatic_complexity.py [Function(name='guess_number', lineno=3, col_offset=0, endline=27, is_method=False, classname=None, closures=[], complexity=4)] F 3:0->27 guess_number - 4 咱们接下来看另外一个完竣的代码示例,其中被计算的函数为rank(),功能是按照电影分数计算评级,终末输出了圈复杂度和对应的评分等第,文献名: get_film_score.py 起先着力:可以看到函数圈复杂度为 5,评级为 A。 固然这个值莫得达到危境线 10,但议论到函数唯独短短 10 行,5 也曾充足引起爱好了。 $ python3 get_film_score.py Cyclomatic Complexity: 5 Complexity Rating: A 行为对比,咱们再计算一下案例中使用bisect模块重构后的 rank() 函数: 起先着力:可以看到函数圈复杂度为 1,评级为 A。 奇米777四色影视在线看$ python3 get_film_score.py Cyclomatic Complexity: 1 Complexity Rating: A 可以看到,新函数的圈复杂度从 5 降至 1。1 是一个终点理念念化的值,要是一个函数的圈复杂度为 1,就代表这个函数唯惟一条主旅途,莫得任何其他引申旅途,这么的函数频繁来说王人十分浅易、容易爱戴。 天然,在每每的名堂建筑进程中,咱们一般不会在每次写完代码后,王人手动引申一次 radon 敕令搜检函数圈复杂度是否顺应圭臬,而会将这种搜检建设到建筑或部署进程中自动引申。 到此这篇对于使用Python3结束判断函数的圈复杂度的文章就先容到这了cosplay 足交,更多联系Python3函数圈复杂度内容请搜索剧本之家曩昔的文章或赓续浏览底下的联系文章但愿宇宙以后多多支撑剧本之家! |
《暴走撸啊撸》(1 /2张)91 麻豆 近日,一档名为《暴走撸啊撸》的动画以漫天掩地之势席卷而来,更是打出了“点我!不雅看!草丛!野战!”的诱惑性宣传语。不愧是...
曹女士终点后悔作念眼部医好意思,她没猜测,眼部医好意思后的10个月里,她的眼眶里不息性充血,每天顶着黑红色的眼球四处求医问药,一度因此抑郁。从事发于今已有3年多...
性爱 奇米影视777me “西西,不要睡……快醒醒!” “西西,西西……” 一句句“不要睡”和大量次柔和拍肩 这一场分秒必争的开说念援助 唤回了一个幼小的人命 ...
《墨雨云间》正在热播中奇米影视777me,开播以来热度握住飙升,短短几集便让口碑逆袭,坐实了2024电视剧市集古装爱情剧题材的第一部大爽剧。双强CP斡旋复仇,几...
香蕉在线精品视频在线 面前,“AI换脸”逐渐成为一种新式骗取妙技,其深度伪造的践诺难以被肉眼区分。如何更精确地识别AI深度伪造?2024年国度网罗安全宣传周展览...