V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
pyengwoei
V2EX  ›  程序员

你们是怎么快速熟悉新项目的代码的?

  •  
  •   pyengwoei · Dec 23, 2015 · 7877 views
    This topic created in 3779 days ago, the information mentioned may be changed or developed.
    你们是怎么快速熟悉新项目( 10 万行+)的代码的?
    55 replies    2015-12-28 09:21:20 +08:00
    kaedea
        1
    kaedea  
       Dec 23, 2015
    大改乱改
    pyengwoei
        2
    pyengwoei  
    OP
       Dec 23, 2015
    技术主管走人了,现在他的一个项目丢给我,让我来维护,看了几周了 感觉还是没有一点头绪,也没有一个技术文档,只是把业务大概给我说了一下。。。。现在老大要求我 需要熟悉每一行每一个量。。。。。
    pyengwoei
        3
    pyengwoei  
    OP
       Dec 23, 2015
    @kaedea 然后拉。。。。/(ㄒoㄒ)/~~
    kaedea
        4
    kaedea  
       Dec 23, 2015
    把项目按业务或者功能分成小块,试着重构某些小块,很快就变成你是最熟悉的人了。
    wenmingvs
        5
    wenmingvs  
       Dec 23, 2015
    楼上的头像让人浮想联翩
    pyengwoei
        6
    pyengwoei  
    OP
       Dec 23, 2015
    @kaedea 确实,我也这样想过
    kaedea
        7
    kaedea  
       Dec 23, 2015   ❤️ 1
    一年下来我把公司项目大大小小的模块都拆过了,最近更是把整个架构都改了。
    这么做有个坏处就是,每天都会有一堆人跑来问你“那个谁,这里要怎么处理才好……”
    naiyu
        8
    naiyu  
       Dec 23, 2015
    我是这样的,先熟悉业务,然后走一下流程,接着走到程序入口,然后一步步来看
    h1029306
        9
    h1029306  
       Dec 23, 2015
    先编译,再运行看看,然后加 log ,看 log 日志,哪里不会加哪里
    timothyye
        10
    timothyye  
       Dec 23, 2015 via Android
    一边看一边吐槽,然后就看懂了
    timothyye
        11
    timothyye  
       Dec 23, 2015 via Android
    @kaedea 够狠
    Felldeadbird
        12
    Felldeadbird  
       Dec 23, 2015 via iPhone
    有需求自然慢慢懂的了
    sfree2005
        13
    sfree2005  
       Dec 23, 2015
    1. 大概了解项目干什么的,知道最主要的几个 use case 是什么
    2. 修改些小 bug
    3. 增加些小功能
    4. 修改大一些的 bug
    5. 增加大功能

    之后就基本上了解了~~
    Valyrian
        14
    Valyrian  
       Dec 23, 2015
    主要靠 git grep
    loading
        15
    loading  
       Dec 23, 2015 via Android
    遇到有 bug 的地方就重构哪个地方。
    iMouseWu
        16
    iMouseWu  
       Dec 23, 2015
    一个人想一下子搞明白 10W 行代码。。。有点吃力呀。。。
    可以先画流程图理清业务,debug 一些核心模块,接下来就是修 bug 熟悉流程
    decaywood
        17
    decaywood  
       Dec 23, 2015   ❤️ 3
    1 、 UML 工具、思维导图先备好。
    2 、把包理一遍,尽量从包名获取足够的信息。
    3 、找到入口函数,分析里面的类,如果有超类,先从超类分析。
    4 、慢慢构建 UML 图和思维导图,不断回顾,总结。
    5 、试着运行代码,断点调试。
    6 、继承核心类,尝试修改逻辑。

    大概差不多了
    Light3
        18
    Light3  
       Dec 23, 2015
    不知道是什么语言。边改边吐槽这是真的。适当的记一下因为很多的时候看着看着就忘了。下次再找只是有模糊的印象。再其次没有文档自己慢慢把自己维护过的 总结下写一个。
    KentY
        19
    KentY  
       Dec 24, 2015
    如果最熟悉的人走了, 那就很难了.
    如果人家还在, 可以通过做小的 bugfixing and CR 开始.
    hqs123
        20
    hqs123  
       Dec 24, 2015
    有哪个需求变动就改哪一块,其它简单看看就行,以不变应万变。
    l1905
        21
    l1905  
       Dec 24, 2015 via Android
    写单元测试
    clockwerk
        22
    clockwerk  
       Dec 24, 2015
    无他 唯改代码时候会去熟悉
    ichanne
        23
    ichanne  
       Dec 24, 2015
    我最近正在接收一个 23w 行代码的 iOS 项目。。。赶紧收藏帖子
    mko0okmko0
        24
    mko0okmko0  
       Dec 24, 2015
    告诉老板功能太多吃不消.
    问老板那些功能是想留下的.
    然后直接做新的,旧的当参考.
    我只能说,能接手别人没留下技术说明与注解的万行代码,
    这种人我佩服,但绝对不想变这种人
    shakoon
        25
    shakoon  
       Dec 24, 2015   ❤️ 1
    如果是标准的 mvc 模式写的代码,那分功能模块一层一层看。
    如果是乱成一团的,那就先自己把它分段,按照你熟悉的方式做“段落整理”,然后再去看具体的代码。
    moe3000
        26
    moe3000  
       Dec 24, 2015
    业务 走流程 边走边看代码 代码再联系数据表
    spacewander
        27
    spacewander  
       Dec 24, 2015 via Android
    改 bug 的时候渐渐就熟悉了
    zhuangzhuang1988
        28
    zhuangzhuang1988  
       Dec 24, 2015
    使用最强 IDE, visual studio 或者 jetbrains 家族.
    然后下个断点, 调试
    thinkmore
        29
    thinkmore  
       Dec 24, 2015
    一个模块一个模块来,然后自己整理画类图
    binjoo
        30
    binjoo  
       Dec 24, 2015   ❤️ 1
    直接丢给我一个项目让我熟悉是不可能的。。

    除非丢给我 BUG ,让我去改,才能熟悉项目。
    cnbiglee
        31
    cnbiglee  
       Dec 24, 2015   ❤️ 1
    我认为只需要熟悉业务流程及代码的架构。然后需要修改的时候就可以大概知道上哪改就行了。不可能去熟悉每行代码的,没必要。
    songco
        32
    songco  
       Dec 24, 2015   ❤️ 1
    1. 按 usecase 的流程读代码, 花时序图 /流程图之类的(一定要有记录)
    2. 改 bug

    其实 2 效率比较高. 没有 bug 你可以考虑模拟在原有的业务上增加点功能.
    wizardoz
        33
    wizardoz  
       Dec 24, 2015   ❤️ 1
    熟悉每一行……这种要求也是醉了。
    这种略大的程序,还是搞清楚整体结构就行了,然后哪里出问题看哪里,或者需要调整哪里看哪里。毕竟生命是有限的。
    我不是说 10 万行代码看不完,只是过多的精力投入到细节上完全没必要,毕竟细节太多了。
    caixiexin
        34
    caixiexin  
       Dec 24, 2015 via Android
    帮忙修一个月 bug 。。。
    xiaoshenke
        35
    xiaoshenke  
       Dec 24, 2015   ❤️ 1
    从项目结构猜,从类名猜用途,运行打 log 。证实猜想是否正确。
    找关键结点 比如入口函数 跳转函数等。
    sumuu
        36
    sumuu  
       Dec 24, 2015   ❤️ 1
    分享下我熟悉一个上 10W 行(伪)代码的当时做法.
    1. 熟悉业务,分析业务,把关键业务入口找出来,然后跟踪代码执行流程.
    2. 整理外部依赖,把数据库连接,缓存系统,第三方请求等等记录下来.
    3. 非到必要时候,别瞎改代码,否则到处冒烟,不骗你.
    huijiewei
        37
    huijiewei  
       Dec 24, 2015   ❤️ 1
    1 、整理全局流程图,标注好注意点,打印出来
    2 、整理模块划分,打印出来
    3 、根据模块整理单独接口,打印出来
    4 、整理公共服务模块,把公共服务模块都独立出来

    做完这些对系统也了解的差不多了。
    oska874
        38
    oska874  
       Dec 24, 2015
    多加班。
    sun2920989
        39
    sun2920989  
       Dec 24, 2015
    边看边在心里骂,顺便做好记录和结构
    词穷的时候基本上就理解了
    ragnaroks
        40
    ragnaroks  
       Dec 24, 2015
    重构
    pyengwoei
        41
    pyengwoei  
    OP
       Dec 25, 2015
    @kaedea 这是好处吧 哈哈
    pyengwoei
        42
    pyengwoei  
    OP
       Dec 25, 2015
    @timothyye 哈哈
    pyengwoei
        43
    pyengwoei  
    OP
       Dec 25, 2015
    @timothyye 确实啊
    pyengwoei
        44
    pyengwoei  
    OP
       Dec 25, 2015
    @sfree2005 Mark
    pyengwoei
        45
    pyengwoei  
    OP
       Dec 25, 2015
    @iMouseWu 是啊 要按功能一个模块一个模块来
    pyengwoei
        46
    pyengwoei  
    OP
       Dec 25, 2015
    @KentY 已经走了,什么都没,只有一堆代码
    pyengwoei
        47
    pyengwoei  
    OP
       Dec 25, 2015
    @moe3000 是的,数据库也非常庞大,还有存储过程 还有 WINDOWS 服务 缓存机制 WCF 等
    pyengwoei
        48
    pyengwoei  
    OP
       Dec 25, 2015
    @ragnaroks 你说的重构 是试着重构吧
    dalang
        49
    dalang  
       Dec 25, 2015
    从 api 层入手,了解重要的几个 api 的 workflow
    pyengwoei
        50
    pyengwoei  
    OP
       Dec 25, 2015
    @mko0okmko0 为了 RMB
    kaka8wp
        51
    kaka8wp  
       Dec 25, 2015
    先找找资料,改改小的模块,看看流程
    pyengwoei
        52
    pyengwoei  
    OP
       Dec 25, 2015
    我准备这样做了,把功能都拆分出来,做成一个一个的小程序,一个程序实现一个功能,不知道这样怎么样
    cxbig
        53
    cxbig  
       Dec 25, 2015
    按功能拆分成小块,哪块要改就先搞清楚那一块。
    能落实到文档的就尽快落实,这样后面的人也容易上手。
    项目上了规模都不是轻而易举就能全通的。
    WendellSun
        54
    WendellSun  
       Dec 27, 2015
    改 bug 。
    pyengwoei
        55
    pyengwoei  
    OP
       Dec 28, 2015
    @cxbig 好的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3560 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 149ms · UTC 10:56 · PVG 18:56 · LAX 03:56 · JFK 06:56
    ♥ Do have faith in what you're doing.