技术 · 开发实战

读懂陌生代码的三步法:入口、数据、失败

接手别人的项目,较为高效的顺序不是从第一行读到最后一行,而是先找到系统被触发的位置。

技术组约 3 分钟技术 · 开发实战

面对一个几万行的陌生项目,从头顺序阅读几乎不可行。更实用的路线分三步:先确认程序如何被启动,再确认数据在模块之间如何流动,最后确认出错时会发生什么。三步走完,就能建立可以工作的整体认识,而不必弄懂每个函数。

第一步找入口。入口不一定是主函数,也可能是某个注册回调、路由表或配置加载点。做法很朴素:从外部行为反推,点击界面上的一个操作,看日志里最先出现什么;调用一次接口,从路由映射顺藤摸瓜。入口确定了,就能排除掉代码库里大量不参与主流程的文件。

第二步追数据。挑一条最重要的请求路径,从输入到输出全程跟一遍,把每一步的数据形态写下来。写下来的动作很关键:只有在试图描述某个中间变量是什么的时候,才会发现自己其实不理解它。常见的卡点是数据在多处以不同结构存在,转换点分散各处,读的时候要专门标出边界。

第三步看失败。把异常处理、重试与超时配置逐一看一遍,注意有没有被悄悄吞掉的错误。一个只写日志而不向上抛错的处理,会让故障定位变得极其困难。理解失败路径的价值在于,它能告诉你作者当年担心什么,而这些担忧往往是系统真正的薄弱环节。

三步法之后,再决定要不要深入细节。一个有效的自测标准是:能否画出一张模块交互图并讲清一条请求的完整生命周期。做不到说明还缺一块,回去补;做到了就可以直接进入改动。阅读代码的目标不是读懂每一行,而是获得做判断所需的最低完整认识。

本文由本站编辑部整理撰写,内容仅作知识分享,不构成医疗、投资、法律建议,转载请注明出处。

读者留言 · 3 条

程
程野

看失败路径这句是真正的经验,吞异常留下的坑我踩过不止一次。

陆
陆遥

跟着数据形态逐条记这个动作,比看十遍源码更有效,很实用。

白
白露

希望能配一个真实项目的走查例子,方法很好但容易用歪。

留言为读者个人观点,不代表本站立场。