如何阅读代码

有经验的开发人员都知道我们大部分都是基于别人的框架和系统来开发代码,比如开发一个应用,是基于OS来开发,开发一个游戏基于一个游戏引擎来开发。进入到公司里面以后开发一个业务逻辑也是基于公司的框架代码来开发,正因为这样,阅读别人的代码,变得非常的重要。 

这里有个游戏开发学习交流小组点击可以直接加入,一起学习交流吧

学会阅读代码的好处有哪些?

1: 用好别人的代码,能节约成本,而阅读代码强,就是用好的关键。

别人写好的代码,成熟的代码我们用到项目中能节约很多的开发成本,缩短项目的周期,所以用好别人的代码变的很重要,你能快速的把第三方开源代码用到项目当中,能快速的把一个模块移植过来,而这些都能节约大量成本,能做到这些,就需要有阅读代码的能力和功底。阅读代码能力强,就能快速的从别人的代码里面找到如何使用的方法,并把内在的逻辑串联起来。别人问我为什么那么快就会用一个框架和库,我告诉他就是源自与阅读代码,阅读代码的接口组织布局等。


2: 阅读别人的代码,能学习到很多设计技巧和模式。

我们很多人喜欢看名人故事,喜欢听名人的采访,想通过名人的一些故事来学习一些东西。对于程序员而言,学习大师的开发技巧,不是看大师的Blog,看大师的故事,而是阅读大师写的代码。比如Linus 是如何设计内核把成千上万的设备驱动管理起来的?等等这些思想我们都可以学习,在阅读大师写的代码的同时,自己能领会到很多的一些代码智慧与设计哲学。


3:阅读别人的代码,更容易让我们掌握相关的知识。

当我们有了某个领域或模块的一些基础知识以后,我们需要更好的结合实践来把知识理解透彻。比如我们学习多媒体的时候,IDCT反离散余弦变换等,结合ffmepg,一遍视频编码解码流程,一遍结合ffmeg来阅读与学习,能加深对知识点的理解与掌握, 比如我们学习设计线程池的知识,结合线程池的代码来学,更容易让我们把问题分析的更透彻。


4: 阅读别人的代码能让我们积累很多代码工具模块。

阅读不同的代码的时候,我们可以从代码框架里面获取写的好的代码模块用到我们的项目中,比如红黑树,我一般就使用linux内核的红黑树,链表这些经典高效的数据结构都来自于一些经典的代码库。每每发现好的代码的时候,我都会把它们记录起来,以后可以用到自己的项目框架体系中。



如何阅读代码


要阅读一个庞大的代码或代码库,搞懂里面的内部逻辑,并很好的掌握他们用到项目中并不是一件简单的事情,那么如何搞懂搞透一个代码库呢?

1: 代码相关的编程语言一定要过关,能清楚的在脑袋里面执行代码。

编程语言的核心机制一定要熟悉,这个是阅读别人代码的第一个关键的点,如果很多语法在你的脑子里面都不熟悉,看不懂,那么能读懂别人的代码几乎是不可能的。阅读代码的时候,每行代码跑出一个什么样的结果,要在脑子里面做到心中有数。


2: 阅读代码要善于处理整体与局部的关系,先建立全局观。

我们阅读代码的时候,首先基于函数,基于模块等,可以先把整个逻辑屡清楚。先把逻辑流程梳理清楚以后,再去看具体的实现细节,而逻辑流程最好的就是通过函数名字,模块名字等来判断,先把整体的流程搞明白。再深入进去代码细节,不要一开始就深入细节,这样你没有一个全局观念。阅读代码的时候要学会用脑图记录起来整个的流程,一边阅读一边把逻辑屡清楚。屡清楚完逻辑以后,就对哪些环节,哪些入口就有了比较清晰的认识,然后结合数据和打印,把整个流程验证一遍。



3: 阅读代码一定要先找好入口,找出阅读的线索。

做任何事情要从一个入口开始,入口找的好,后续就会很顺利,比如我们代码从main开始跑起,那么你从main函数开始,就能把整个的逻辑看清楚,所以找到一个合适的入口是非常重要的。有时候有些代码不像从main函数开始那么简单,可能有多个接口和入口,那么这些我们就可以把它们作为线索,来进行分析。你把整个代码框架里面的代码分成几条代表性的线索,每次带着这些线索去阅读,把内部的结构和流程搞明白。


4: 阅读代码要学会搜索, 从搜索的结果中找到逻辑。

  比如我们看到一个函数or类,我们想要看看整个都怎么使用的,通过这个函数,把整个流程找出来,那么我们就要从定义在哪里,调用在哪里都过一遍,这个时候你可以采用搜索的办法,把项目里面所有的代码都搜索一遍。搜索出来结果以后,你就知道在哪些地方调用了,然后一个一个的分析,一个一个的看,找出逻辑与线索。有时候我们的变量被赋值给其他的人,这个时候要搜索其他的,所以一个好的代码搜索阅读工具是非常必要的,我这边用的比较多的是sublime 和source Insight, 一般大项目我都用source Insight。


5: 开始阅读代码之前一定要具备相关的基础知识。

开始阅读代码之前还是要准备好自己的知识认知,如果自己什么相关知识都没有就去阅读代码,搞不出来是正常的。所以还是要先积累相关的知识,基本概念再去阅读别人的源码。你具备了相关的知识以后,你脑袋里面基本就知道这个事情大致是怎么完成的,你再去阅读代码,你就能很轻松的读懂了,比如要你读懂一个地图编辑器的工具代码,那么你如果有做地图编辑器的步骤和思路,那么你就可以带着思路去找代码,比如地图数据如何编辑生成?生成后的格式是怎么样的?格式生成后数据如何读取的,读取到哪里,寻路的时候采用什么算法,寻路的路径出来后,怎么控制在路径上行走的,你带着这些问题去阅读地图编辑器的代码,那么你就能掌握好整个代码框架库,虽然不是你写的,但是你还是比较清楚的。


总之阅读好别人的代码取决你的基础,知识体系,以及耐心,这个不是一下就能提升的,需要在代码阅读中不断的总结,和阅读更多代码以及积累更多的行业知识,希望大家坚持下来,你能否走到系统分析师,架构师这个级别阅读代码是一个很重要的分水岭。

你可能感兴趣的:(如何阅读代码)