V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
devqin
V2EX  ›  程序员

如何读代码?

  •  
  •   devqin · 2014-01-07 09:24:31 +08:00 · 4797 次点击
    这是一个创建于 3958 天前的主题,其中的信息可能已经有所发展或是发生改变。
    不可否认,阅读大量的优秀的代码对自己coding的风格有很大的影响,可是如何去阅读代码,如何高效的阅读代码,一直没有找到好的方法,求达人指教一二,不胜感谢
    20 条回复    1970-01-01 08:00:00 +08:00
    coetzee
        1
    coetzee  
       2014-01-07 09:30:50 +08:00   ❤️ 2
    我都是删着读,边读边删(确切的说不停地精简,总结出一个最小的核,然后慢慢补充),最后总体捋一下脉络,不过最近有个同事的程序让我快要崩掉了!
    MingZhe
        2
    MingZhe  
       2014-01-07 09:35:23 +08:00   ❤️ 1
    @coetzee

    哇,中国好同事啊。。。还给看代码。。。
    loading
        3
    loading  
       2014-01-07 09:51:36 +08:00 via iPhone   ❤️ 2
    根据你的水平。
    低水平,一个个函数分开读
    中间水平,整体读
    高手,不管函数,看结构
    loading
        4
    loading  
       2014-01-07 09:52:58 +08:00 via iPhone   ❤️ 1
    如果是进阶,要调换一下…
    meta
        5
    meta  
       2014-01-07 10:51:42 +08:00
    请高声朗读。
    tox
        6
    tox  
       2014-01-07 13:11:44 +08:00
    先了解项目的结构,和各个模块的功能。
    然后可按照自己感兴趣的模块阅读。
    greatghoul
        7
    greatghoul  
       2014-01-07 13:27:50 +08:00
    我其实是按 Commit History 读的,这样能够看到项目的演进,最近这样读 Ruby China 的代码,学到了不少好东西,还有就是读的时候要适当的做一下笔记。
    lenville
        8
    lenville  
       2014-01-07 13:42:23 +08:00
    @meta 请有感情地大声朗读 ( 捂嘴笑

    其实我是初段选手
    我像 @loading 说的那样一个函数一个函数分开读
    acros
        9
    acros  
       2014-01-07 14:32:41 +08:00
    做游戏项目的,一般模块很多。
    我习惯先找一个目标(比如修改某个技能),然后定位代码。看实现(一般运行debug跟着执行走)。然后看模块组织,最后浏览下框架。基本上是由点及面,从小到大的顺序。

    记得有本书专门讲代码阅读的···
    hgyenzo
        10
    hgyenzo  
       2014-01-07 16:17:38 +08:00
    @loading 怎么调换O O
    Mutoo
        11
    Mutoo  
       2014-01-07 18:46:18 +08:00
    @acros 那本书叫 《代码阅读方法与实践》
    sdysj
        12
    sdysj  
       2014-01-07 19:01:31 +08:00
    代码写多了自然随便看一段就会慢慢跟踪上下文,很自然的感觉。。。。
    Akagi201
        13
    Akagi201  
       2014-01-07 22:18:24 +08:00
    先猜代码实现什么功能(或者看文档或者听同事说), 然后看懂个大概流程, 看跟自己想的一不一样, 如果是很复杂的代码就要一点点分析的看了.
    regmach
        14
    regmach  
       2014-01-07 22:27:32 +08:00
    从过程追溯函数,再延伸到其他类和过程
    这样的方法可以吗?
    zhujinliang
        15
    zhujinliang  
       2014-01-07 22:40:35 +08:00 via iPad   ❤️ 1
    @meta
    @lenville
    想起了那个疯狂年代的疯狂英语
    liuting
        16
    liuting  
       2014-01-08 10:22:45 +08:00
    需要逻辑..
    tkdchen
        17
    tkdchen  
       2014-01-08 11:42:13 +08:00
    使用ctags。
    从代码的循环和分支结构中,从宏观了解某个函数或者方法的逻辑。
    一定要使用版本控制,例如git,bzr,hg。
    及时的做注释并使用TODO,FIXME,NOTE做标识。
    适时地做合理地推断
    stackpop
        18
    stackpop  
       2014-01-08 12:09:59 +08:00
    我的习惯是按模块读,然后自己设法把这个模块抽离出来,再进行改造。比如leveldb,我先读的是他的LRUCache,redis我先读了他的hash的实现
    goto
        19
    goto  
       2014-01-08 18:10:41 +08:00
    阅读代码有时候非常有趣,读到好的代码那真是一种享受
    liuting
        20
    liuting  
       2014-01-09 11:00:30 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4822 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 03:58 · PVG 11:58 · LAX 19:58 · JFK 22:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.