问:

研究一个开源系统源码的时候,总是不知道该从哪里研究。
我现在看源码从index文件开始看起,遇到包含的文件,就去看包含的文件,
包含的文件中又引用了其它的文件,总是觉得看来看去,很没有逻辑性。
各位有什么好办法,快速研究一个系统的源码?

答:

另外:

回答里推荐了一本书——代码阅读方法与实践,里面提供了如下方法:

但要注意从小型的程序开始阅读;不要立即陷入对大型系统的研究中。编译研究的程序并运行它们。这样您可以得到即时的回馈,了解代码预想的工作方式,同时还可以获得成就感。下一步就是主动地修改代码来检验您对代码的理解是否正确。再次强调,要从小的改动做起,逐渐地增大他们的范围。
—— 引自 第1章 导论

代码阅读包含有很多可供选择的策略:自底向上和自顶向下的分析、试探法、检查注释和外部文档,应当根据问题的需要来尝试所有这些方法。
—— 引自 基本编程元素

参考文章:C+±如何快速解构一个系统的源码

C/C++ 如何快速解构一个系统的源码(如何看懂大型工程项目的源码)相关推荐

  1. 鸿蒙系统的结构图,一图看懂鸿蒙系统中的JS开发框架!

    原标题:一图看懂鸿蒙系统中的JS开发框架! " 前端这两年玩起来了三国杀,Vue,React,Angular 三足鼎立,其中 Vue 派系在国内打的 Angular 找不到北了. 因此,小程 ...

  2. 一个简单案例,带你看懂GC日志!

    环境准备 这样一个案例程序: public class Main {public static void main(String[] args) {byte[] array1 = new byte[4 ...

  3. (Matlab源码)Matlab实现算术编码(Arithmetic coding)超级详解(每一段代码都可以看懂)

    1.代码功能 输入:一个字符串 输出: codeword(码值) codeword所占的位数 2.代码框图 3.代码超详解 统计字符串中的字符种类,调用函数,放入数组b中. b=unique(str1 ...

  4. 一个简单案例,5 分钟看懂 Java Lamdba 表达式

    JDK8引入了一个新玩意,叫做lamdba(那么大)的表达式,说得神乎其神,说真的,这玩意吧,并不难,但是要讲清楚吧,也不是太容易的事情. 从匿名内部类开始说起 老实交代,直接来讲lamdba表达式还 ...

  5. surface 安卓双系统_一张图看懂微软Surface发布会:史上最大惊喜

    10月2日晚,微软在纽约举行新品发布会,一口气带来了Surface Neo双屏电脑.Surface Duo折叠屏手机.Surface Pro X.Surface Laptop 3. Surface P ...

  6. 详解 matplotlib.pyplot ,Python 初学者真能看懂

    Matplotlib 是一个 Python 中的 2D 绘图库, pyplot 模块是一个方便使用 Matplotlib 的接口. 下面是 pyplot 模块中的五个重要的知识点: [创建图形]: p ...

  7. 读懂matlab代码,一个Matlab的寻峰程序没有看懂,不知大家能否帮助?

    这个程序用来寻找输入的两组数据(x,y)的峰,并计算其半高全宽和其他参数. 开始比较容易懂,后来到了程序主体部分,看不明白,看了好长时间,可能因为知识结构不全面,看不懂了.希望再此能得到大家的帮助,多 ...

  8. ts从入门到进阶—3-4var/let/const声明,解构,展开

    var/let/const声明,解构,展开快速入门 let 声明 const 声明(被赋值后不能再改变) let hello = "Hello!"; 1.块作用域:a.块作用域变量 ...

  9. 每天十分钟学好ES6--关于解构赋值的彩虹屁

    解构赋值是es6中很简单实用的小语法,今天一定要给它吹一下彩虹屁. 说他简单,是因为在es6规范中,排位在第二,也就是let和const之后就是他了,语法篇章也不多,还没说多少就开始说应用,应用的部分 ...

最新文章

  1. java web.xml_Java Web之XML基础
  2. JAVA面试题(20)
  3. 基于android的简单网页_成都APP开发:APP原生和网页开发有什么区别?
  4. c linux 判断ip合法_shell 检测ip的合法性与检测网络掩码的合法性
  5. STM32的CAN过滤器详解
  6. reids和memcache的区别和一些常见的问题
  7. 现在最火的深度学习框架是什么?
  8. 金士顿100 G3U盘写保护无法格式化的解决方法记录
  9. 5.8G雷达感应模块,微波雷达传感器技术,人体存在感应雷达
  10. 苦才是人生的经典美言
  11. xynu 2917: 整数凑和问题(搜索)
  12. 解决IOS微信浏览器底部会出现向前向后返回按钮,返回不刷新的问题
  13. python中怎么编写程序_python写完程序怎么运行
  14. python列表中的元素可以是不同类型_Python列表中所有元素必须为相同类型的数据。...
  15. 邹欣对话图灵奖得主Jeffrey Ullman:数据库不会进入周期性的坏循环 |《新程序员》
  16. 你可能不了解的《唐诗三百首》
  17. 计算机画画作品 人物 游泳,幼儿人物画图片游泳的人
  18. MAX485串口通信
  19. python语言int什么意思_int在python中什么意思
  20. CLion配置visual studio(msvc)和JOM多核编译

热门文章

  1. 手势识别兼容Android 1.x和2.x的代码【转】
  2. 涡流探伤仪计算机软件,册亨通过式涡流探伤仪涡流探伤仪保养
  3. pythonzerojudge题库及答案_大学mooc2020用Python玩转数据试题及答案
  4. node 生成随机头像_微信头像新玩法?二次元头像自己捏,每款都独一无二
  5. 【学习笔记】5、Python基础语法
  6. SD销售订单输入成本中心
  7. 不同服务器之间进行传输
  8. SAP 年结(转载)
  9. 如何确定固定资产入账价值
  10. 从啤酒尿布到自动驾驶,零售行业如何再创营销神话?