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

作为一个新人,大家是如何快速学习掌握一个老项目的

  •  
  •   bigxianyu · 221 天前 · 4153 次点击
    这是一个创建于 221 天前的主题,其中的信息可能已经有所发展或是发生改变。

    文档不全,代码看的懂,但是链路长,逻辑复杂,猜不出意图,这种大家有什么好的办法可以快速学习掌握吗

    41 条回复    2023-09-14 19:00:25 +08:00
    PingAn66
        1
    PingAn66  
       221 天前 via Android
    不懂的多问问同事
    bigxianyu
        2
    bigxianyu  
    OP
       221 天前
    @PingAn66 嗯,有时候也会问,但是也会感觉多问不太好
    shortxxx
        3
    shortxxx  
       221 天前
    从业务逻辑出发 找产品聊 功能逻辑看测试
    linshuizhaoying
        4
    linshuizhaoying  
       221 天前
    思维导图+架构梳理
    x86
        5
    x86  
       221 天前
    多问同事 & 配合 GPT 补充文档
    或者
    https://github.com/eosphoros-ai/DB-GPT
    LowBi
        6
    LowBi  
       221 天前
    debug 或者问 gpt
    zcf0508
        7
    zcf0508  
       221 天前 via Android
    通读代码
    darkengine
        8
    darkengine  
       221 天前   ❤️ 1
    1 ,先在本地跑起来
    2 ,在本地跑起来的代码上加日志,打断点折腾

    没有捷径
    litchinn
        9
    litchinn  
       221 天前   ❤️ 11
    作为一个新人,想迅速上手一个大型的老项目,是需要点运气的
    1. 有一个优秀的领导(组长)这种角色,给你分派任务时从一些工作量不高但是能切入核心的工作开始,慢慢慢慢一个模块一个模块开始认识整个系统
    2. 认真对待每次需求评审会,此时大家也是新接触功能,如果你是新人那么在评审会上你应该有很多名词不懂,记下来会后问一问,基本能搞清楚流程了
    3. 看代码这东西真的很看运气,因为有时候项目的代码真的是屎山,写的人再看都不一定知道咋回事了。
    4. 多去测试环境(或者其他非生产环境)的应用上点一点,看一看各个功能的用途,并尝试从接口找到对应代码(非 web 项目同理)
    polo3584
        10
    polo3584  
       221 天前
    先让自己本地跑起来,然后先摸清各个模块对应功能,具体到里面的细节得到改到对应的模块才会去细看。
    babyoung
        11
    babyoung  
       221 天前 via iPhone
    应该是作为一个老人,如何快速上手新项目?
    wqhui
        12
    wqhui  
       221 天前
    看函数名加注释能知道大概在做什么,具体细节等要改的时候再认真看吧,看了也记不住那么多,神仙命名无解
    my101du
        13
    my101du  
       221 天前
    本地 clone 一份,先跑起来。

    然后添加一个 branch ,必要的地方加注释。

    然后查看数据表的 Diagram

    然后新建一个 markdown 文件和一个思维导图,分别记录重要的文件、代码和结构。
    hankai17
        14
    hankai17  
       221 天前
    8L + 1
    debug + 日志
    aptx4689
        15
    aptx4689  
       221 天前
    接新 feature 加功能
    vsitebon
        16
    vsitebon  
       221 天前
    你一个人接手的代码前提下:
    1. 一般如果不是非常屎山的代码,看函数名能搞清楚这个函数是做什么的,最怕就是接手:gmCount() => 购买记录
    2. 如果碰到上述的这种屎山代码,加断点然后看操作后会输入什么输出什么;
    3. 如果加断点的时候碰到中间的数据出现,khdd 这种的话,估计你还得去看具体的值是什么,就怕出现一个莫名奇妙的 1 或者 ‘1’;
    4. 如果以上的这些情况你都碰到了,那恭喜你,你将进入地狱级难度;接下来你如果没办法那么快实现功能,一定一定要提前跟经理说
    xiyou007
        17
    xiyou007  
       221 天前   ❤️ 1
    我一般是
    1. 先了解项目背景 主要做什么用的
    2. 主要功能操作步骤
    3. 主要功能的接口,以及背后的数据表,表主要的字段 以及表关联关系,画图记笔记
    4. 其他的话 就是接需求 边写边看 ;切记 接新的需求后 先出方案 跟老同志 请教一下; 写完 让老同志 review 一下代码
    shunwei
        18
    shunwei  
       221 天前
    你做那一块, 就把这一块功能了解清楚, 慢慢的, 整个项目你就都清楚了
    chitanda
        19
    chitanda  
       221 天前
    自己写个文本类的文档,看到哪写到哪,看一遍写一遍之后,丢给 ChatGPT 让它帮你画流程图
    yufeng0681
        20
    yufeng0681  
       221 天前
    @xiyou007 思路清晰, 我补充一点,不要期望通过看代码了解项目,只有分派到你具体模块,具体 bug 修复,你才需要深入看某一部分的代码,最好还是 debug 跟踪调用的接口方式快速走读代码。
    placeholder
        21
    placeholder  
       221 天前
    写笔记,真的要写笔记。光看代码是记不住的
    Hilong
        22
    Hilong  
       221 天前
    只能一点点磨哦。我之前也是接了个老项目,3 个同事写了一年,让我来接手,前面一两周,真的找个功能在哪实现的都很困难,过了一两个月就好多了。基本熟悉了
    fredweili
        23
    fredweili  
       221 天前
    从修简单 bug 入手,debug 走流程
    X90
        24
    X90  
       221 天前
    8 楼+1 。看来大家的项目都没有像样的文档我就放心了。全靠传帮带交接。
    darkengine
        25
    darkengine  
       221 天前
    @X90 在某些项目里,有时候没文档还少走些弯路。。。
    yagamil
        26
    yagamil  
       221 天前
    最近接手了一个私人的活,没有文档,没有注释,一个文件里面上万行代码,里面复制粘贴 也有不少,命名也是混乱。

    主要负责后期的新增功能和修理 bug 。

    1 周左右上手了。

    主要代码不要动,新增的功能用已有的代码继续复制上去,根据新功能改动即可。

    俗称继续堆屎山。

    别考虑什么优雅,再优雅的代码,跑不起来,都是垃圾。
    murmur
        27
    murmur  
       221 天前
    不学。根本没时间。要的就是个快速改需求的能力
    enchilada2020
        28
    enchilada2020  
       221 天前 via Android
    曾经有过同样的问题 现在已经弃疗了
    jones2000
        29
    jones2000  
       221 天前
    根据前端业务,一块一块看。所有的代码基本都是围绕业务来做的。
    mohuani
        30
    mohuani  
       221 天前
    @linshuizhaoying 这才是正确的方式,无论是开发,测试,还是产品。
    c3de3f21
        31
    c3de3f21  
       221 天前
    了解了解业务,然后点一点按钮测一测数据,后台打端点,
    可能是我项目经验少,主要看数据流向(因为可以看出调用过程嘛)和数据关联(连表或者 rpc 服务之类的)
    HyperionX
        32
    HyperionX  
       221 天前
    后端业务的话,通过测试报告/技术文档/prd/产运记录的反馈整理正向&逆向业务流。代码本质上就是实现业务的手段,懂业务很快能懂代码为什么这么设计
    X90
        33
    X90  
       221 天前
    @darkengine 哈哈,本来一坨屎山就够难受了,再来一坨掺和着更难受
    wgs
        34
    wgs  
       221 天前
    @xiyou007 正解
    c0nstantien
        35
    c0nstantien  
       221 天前
    参与运营与一线排障
    coffeygao
        36
    coffeygao  
       221 天前
    简单点的项目 review 代码就行。
    稍微复杂:直接运行起来,点一点,走一走业务,看看原型,设计,需求文档。
    特别复杂:请教同事/项目主管运行起来项目代码,请教他们讲解业务逻辑,review 代码。
    复杂像屎:跑路吧。

    总结:尽量自己解决,鼻子底下就是嘴,不懂就多问。
    huihuiHK
        37
    huihuiHK  
       221 天前
    边用边了解总结
    zdt3476
        38
    zdt3476  
       221 天前
    只看代码是很难记得住的,还是得有简单的工作入手
    overthemoon
        39
    overthemoon  
       221 天前
    该 bug 或者写新代码的时候熟悉
    Justin13
        40
    Justin13  
       221 天前 via Android
    没有快速的办法,就靠时间慢慢熟悉
    如果公司不给足够的时间,建议跑路
    vgbw
        41
    vgbw  
       221 天前
    直接问同事,这种一般都是屎山
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1207 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 23:22 · PVG 07:22 · LAX 16:22 · JFK 19:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.