阅读源码的方法 - 弦外之音

/ 0评 / 2

本文分享一些阅读开源项目代码的方法。

1,切记不要从头文件一个一个看,想一下子把所有变量的含义都搞明白。我以前也用这个方式,后来发现效率太低。变量的含义跟作用应该是要从代码逻辑里面一点点调试来想出来的。基本上,一些比较复杂的变量,你很难从头文件的注释就能立马看懂它的含义。

而且有很多变量是在不同模块里面被使用的,你当前如果用不到某个模块,就不需要去看那些变量,因为你用不着,跳过可以节省时间,提高效率。


2,你应该立马找到 入口函数,例如 main 函数,从 main 函数的逻辑往下看,这些代码逻辑用到哪个变量,函数,你再具体去看特定的变量跟函数。用到再看是提供学习效率的方法之一

通过从 main 函数不断向下读,把项目的架构,模块整理出来,然后逐个模块击破,切记不要这里看一点,那里看一点,不要被 if 等条件分支转移注意力。

因为一个项目的分支是很多的,因为他要解决很多场景的问题。你要抓住某个场景的代码,从头到尾,顺着一条业务线看下来。


3,擅于使用 集成开发环境(IDE)调试代码,例如 vs2019,clion,xcode,qt creator。最好不要用 WinDgb 跟 GDB,因为他们没有集成环境那么直观强大的功能。


4,擅于利用 IDE 分析代码,IDE 通常都会分析你的代码,可以快速准确定位到函数或者变量被多少个地方调用,可以查看类的继承关系。下面以 vs2019 为例来演示。

技巧一 :Go To Definition,跳转至实现,可以快速跳进去函数的实现 ,快捷键 F12。

技巧二 :Go To Declaration,跳转至声明,声明通常在头文件里面,函数的注释通常也在头文件里面 ,快捷键 Ctrl + F12。

技巧三 :View Call Hierarchy,查看函数或者变量的调用,快捷键 Ctrl + K。

可以看到,底部出现了两个东西,Calls To socketCalls From socket

Calls To socket 代表调用 UDT::socket 函数的地方。

Calls From socket 代表 UDT::socket 函数里面调用了哪些函数。

通常,如果看到哪些模块调用了这个 UDT::socket 函数,你大概就能猜到这个函数的作用了。所以 IDE 这个功能非常有用。


技巧四:Class Views,对象查看窗口。

通常一个类里面会有很多的方法跟变量,而且还有很多注释,通常一个屏幕只能看到 四五个函数,你要不停滚动才能看到全局,所以推荐把 Class Views 窗口调出来,可以很方便看到大多数函数跟变量,如下:

我上图这个是缩小了的,如果全屏,通常能一下子看到 20多个函数。


技巧五:Rename,重命名变量,如果你需要改变一个变量或者一个类的名字,推荐你用 IDE 来改,因为如果太多地方,你自己手动可能会改漏。


技巧六:擅用 IDE 的帮助文档,因为 微软的文档是非常全的,如果你不了解一个 Windows 函数的作用,可以直接按 F1 ,就会跳到微软的官方文档。

F1 找文档,会比用搜索引擎更快一些。


至此,vs2019 的技巧讲解完毕了。

提醒:只要是 IDE 工具,肯定都有类似的功能,学东西要举一反三。所以 clion,xcode 肯定也有类似的功能。

发表回复

您的电子邮箱地址不会被公开。