[讨论] 大家一般是如何阅读开源代码的?进来指点迷津吧~

wangerxian   2023-5-5 17:22 楼主

近期接手一个开源代码,需要读懂源码方便后期移植,代码量巨大(I5内核 编译一个多小时),而且内容非常有专业性(医学类),看了一天,没看出个所以然来。

尝试过调试时一条语句一条语句的读(同时看参数和返回值),但是函数封装了很多层,看的有点懵了。大家在阅读这种代码量非常庞大的源码时,一般采用什么方法?

目前我的办法真的就是只有死磕了。

回复评论 (26)

比如你想了解某段代码,直接打断点,看运行结果,就知道这段代码的功能了

点赞  2023-5-5 17:39

先了解下行业背景和规范吧

点赞  2023-5-5 20:57
先分大模块 ,代码跳到某些地方不管他看返回值是啥,我看def 一般直接看return 里面爱啥啥,把整个流程梳理完再说
点赞  2023-5-6 07:14
封装嵌套很多,不管他 看入口出口 当成黑箱 先找到整体的,说实话小的函数里内部的有各种纠偏和防呆的冗余,看起来贼绕
点赞  2023-5-6 07:16

不断地分解

点赞  2023-5-6 08:51
引用: 吾妻思萌 发表于 2023-5-6 07:16 封装嵌套很多,不管他 看入口出口 当成黑箱 先找到整体的,说实话小的函数里内部的有各种纠偏和防呆的冗余 ...

是的,有些函数套了很多层,但是调用的是同一个函数。估计就是为了好移植。

点赞  2023-5-6 09:10

第一步先理清框架吧。

这样才能分层去看代码。有些代码无需修改部分理解一下大概功能就行。

 

 

点赞  2023-5-6 09:21

黑盒模式,在分模块理解,在细分,一步一步的

在爱好的道路上不断前进,在生活的迷雾中播撒光引
点赞  2023-5-6 10:32
引用: damiaa 发表于 2023-5-6 09:21 第一步先理清框架吧。 这样才能分层去看代码。有些代码无需修改部分理解一下大概功能就行。   ...

嗯嗯,现在通过例程在整理框架

点赞  2023-5-6 10:50
引用: 秦天qintian0303 发表于 2023-5-6 10:32 黑盒模式,在分模块理解,在细分,一步一步的

只能这样了,不过能调试有些地方理解的还是快一些~

点赞  2023-5-6 10:51
咋看,带着问题看,
点赞  2023-5-6 10:58
引用: wangxiangtan2 发表于 2023-5-6 10:58 咋看,带着问题看,

这个也是个方法~

点赞  2023-5-6 13:26
引用: wangerxian 发表于 2023-5-6 10:51 只能这样了,不过能调试有些地方理解的还是快一些~

能调试其实也是按照这个步骤去理解,有一些底层其实是不需要了解那么透彻的,都是需要和功能需求关联的

在爱好的道路上不断前进,在生活的迷雾中播撒光引
点赞  2023-5-7 21:50
引用: 秦天qintian0303 发表于 2023-5-7 21:50 能调试其实也是按照这个步骤去理解,有一些底层其实是不需要了解那么透彻的,都是需要和功能需求关联的

目前只了解一些API函数的功能,没去了解底层是如何实现的。

点赞 (1) 2023-5-8 08:56
引用: wangerxian 发表于 2023-5-8 08:56 目前只了解一些API函数的功能,没去了解底层是如何实现的。

读别人代码是最痛苦的,我一般读懂后还会重新写一遍  

在爱好的道路上不断前进,在生活的迷雾中播撒光引
点赞  2023-5-8 16:52
引用: 秦天qintian0303 发表于 2023-5-8 16:52 读别人代码是最痛苦的,我一般读懂后还会重新写一遍  

我就不指望重写了,能用上就行了。

点赞 (1) 2023-5-9 09:14

死磕也不失为一个好办法

默认摸鱼,再摸鱼。2022、9、28
点赞  2023-5-14 15:36
引用: freebsder 发表于 2023-5-14 15:36 死磕也不失为一个好办法

死磕是最后的出路了,目前死磕的还行,嘿嘿~

点赞  2023-5-15 09:57
引用: wangerxian 发表于 2023-5-15 09:57 死磕是最后的出路了,目前死磕的还行,嘿嘿~

你也在做医疗这块?

默认摸鱼,再摸鱼。2022、9、28
点赞 (1) 2023-5-17 11:08
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复