• 请不要在回答技术问题时复制粘贴 AI 生成的内容
pyengwoei
V2EX  ›  程序员

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

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

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

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

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

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

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