本文分享一些阅读开源项目代码的方法。
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 socket
跟 Calls 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 肯定也有类似的功能。