zoukankan      html  css  js  c++  java
  • 怎么读源码 读源码的一些技巧

    除非你在泛泛的浏览代码,否则

    1.开始时,尽量去找相关文档

    2.实际使用该软件

    3.保持清醒,知道此时自己在找什么:架构?一段算法?或是某个具体的函数调用?

    要有多种策略去搞懂,一种不行马上去换另一种尝试

    如:读文档,不行就换 读注释,不行就换 读源码,不行就换 跑一变程序并打断点调试。

    静态调试-》动态调试

          如 strace,ltrace,gdb


    清晰的知道,自己想要找到什么,目标要明确,否则容易迷失方向。

    找到目标代码后,忽略不相关的内容。这是一种必须掌握的技能(亲身体会。。否则你的脑子会随着不断的深入代码而逐渐变为一团浆糊,连自己在哪儿,在干什么都不知道)

    手段:

    切片(slicing)

    把代码复制出到一个临时文件中,删掉不需要的无关部分(打省略号),只留下主干

    实现类似的新特性时,最好找个功能类似的模块,作为模板

    代码越多大多数时候都是 自底向上


    了解某个方法、函数的作用
    1.基于函数名 -猜 

    2.读注释

    3.如何使用这个函数(调用者)

    4.读函数内容代码

    5.查资料,文档

    在阅读控制代码时,要添加注释

    对于控制结构的分析

    1.每次只分析1个控制结构,将内容看作黑盒

    2.遇到特殊的如 goto,break,continue,要单独分析

    union 共用体 联合体

    常用于实现 多态

    一个对象,在不同情况下,有多种对应的工作方式


    文档

    刚接触大型项目时,推荐先读读文档,从宏观角度了解结构,设计理念,在你深入具体的代码丛林之前,至少先拿着模糊不清的地图和指南针。

    阅读源码时,尽可能的利用能得到的文档。阅读一小时代码得到的信息,不过相当于阅读1分钟文档。

    但文档也会存在一些问题:

    如 @hide

    未记录的特性

    理想化表述


    可以打印到纸上,或者手写

    要理解复杂的算法和数据结构,要找到一个安静的地方,聚精会神的思考,不要借助任何计算机化或自动化的帮助。 笔都不要用?!

    需要创造一个工作环境,不被打扰。被打断后至少要15分钟才能恢复思考状态。

    吐槽:开放式办公环境很难做到这一点,就连Ruby的创造者也有体会。

    总结:

    1.找文档,注释看,1小时代码=1分钟文档,有大局观,但小心文档也有细节的疏忽

    2.跑一下代码,或调试一下

    3.分析代码时,记住自己的目标,用切片法忽略掉不必要的内容,只保留主干

    4.难到爆的算法内容,打印或手写出来,不用自动化工具,只用自己的脑子,聚精会神分析

  • 相关阅读:
    设计模式
    【C/C++多线程编程之六】pthread相互排斥量
    J2EE的13个规范之(三) Servlet简单介绍
    .NET实现单点登录研究过程总结--【SSO】
    hdu4081 次小生成树变形
    eclipse代码提示框背景色改动
    Linux SO_KEEPALIVE属性,心跳
    [实战]MVC5+EF6+MySql企业网盘实战(20)——Bootstrap Paginator
    [工具]图片等比例压缩工具
    [工具类]视频音频格式转换
  • 原文地址:https://www.cnblogs.com/cyy12/p/11902306.html
Copyright © 2011-2022 走看看