V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
codechaser
V2EX  ›  问与答

真心请教关于阅读源码的问题

  •  
  •   codechaser · 2019-04-29 15:46:10 +08:00 · 1522 次点击
    这是一个创建于 2046 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位好!如果想要阅读一个开源项目的源码,而这个源码作者水平又很高,怎么着手开始看呢?例如像这个:g2o.我现在主要是根本找不到该从哪个地方开始看,或者说程序入口在哪儿...翻了一会儿越来越觉得难,退堂鼓就开始敲了... 实在是没有这个经验,无头苍蝇...

    9 条回复    2019-04-29 18:51:08 +08:00
    ghos
        1
    ghos  
       2019-04-29 16:28:55 +08:00
    开 debug 一路一路跟下去
    whoami9894
        2
    whoami9894  
       2019-04-29 16:29:31 +08:00 via Android
    从 v0.1 的源码看起
    cjc2017
        3
    cjc2017  
       2019-04-29 16:45:37 +08:00
    相同的困惑
    tt67wq
        4
    tt67wq  
       2019-04-29 17:37:21 +08:00   ❤️ 1
    直接看源码跟考古差不多,没有章法的话根本看不了。
    最好是尝试自己写点简单 demo,写的时候会遇到问题,然后去源码里面找找他是咋写的。
    changwei
        5
    changwei  
       2019-04-29 17:46:08 +08:00 via Android   ❤️ 1
    如果是找不到入口的话,先看 travis,cmakelist (如果没有用 cmake 那就看 makefile )。对于有依赖管理的项目,先看他的依赖声明文件(比如前端就是看 package.json,php 看 composer.json ),了解这个项目外部有哪些依赖。

    看 make 文件是为了了解这个项目内部的编译顺序,了解项目内部模块互相依赖的情况。梳理清楚项目内部的依赖之后就至顶向下看。

    我看的都是中小项目,web 业务代码比较多,这个思路足够了,大项目开源轮子估计还有别的技巧。比如结合 readme.md 和一些 docblock 格式化的注释。
    dfjslkjdf
        6
    dfjslkjdf  
       2019-04-29 18:32:03 +08:00   ❤️ 1
    下载下来编译,先读 readme。
    有文档读文档,
    Documentation
    A detailed description of how the library is structured and how to use and extend it can be found in /doc/g2o.pdf The API documentation can be generated as described in doc/doxygen/readme.txt

    最主要理清楚模块框架,整体设计,然后逐步深入吧。
    单元测试也有助于理解。
    dfjslkjdf
        7
    dfjslkjdf  
       2019-04-29 18:32:30 +08:00
    个人拙见,有更好的东西请大佬指教。
    blless
        8
    blless  
       2019-04-29 18:48:34 +08:00 via Android
    go 语言我觉得有个好处就是我看不懂就去看 test 里面代码怎么测试的
    q8164305
        9
    q8164305  
       2019-04-29 18:51:08 +08:00 via Android
    借助大佬的源码阅读文章和 debug 慢慢看,别自己扎进去,网上很多源码分析,一边看一边 debug
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5676 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 03:00 · PVG 11:00 · LAX 19:00 · JFK 22:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.