新人如何看懂公司项目代码 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
TowerLi
V2EX    程序员

新人如何看懂公司项目代码

  •  
  •   TowerLi 2020-05-06 14:59:45 +08:00 12862 次点击
    这是一个创建于 1989 天前的主题,其中的信息可能已经有所发展或是发生改变。

    某国企工作,接手一个 2016 年的项目,当时是由一个外包公司人员和前一个同事开发(目前都已离职),现在要二次开发。

    目前情况是,有源代码,但是没有项目文档,环境也不清楚怎么样,网络和数据库啥的,项目跑不起来,也不知道问谁。现在想啃这个源代码,实在是啃不动,很多封装的方法,自定义注解之类的,看不懂有点痛苦,有啥好的办法吗?

    71 条回复    2020-05-08 09:48:57 +08:00
    liuxey
        1
    liuxey  
       2020-05-06 15:03:51 +08:00   1
    2016 年的项目有可能是 2006 年的架构,这个情况不要死磕,向上级反应寻求外援,最好找到之前的开发人员
    lhx2008
        2
    lhx2008  
       2020-05-06 15:20:06 +08:00 via Android
    先想办法跑起来
    Zhangxiaopa
        3
    Zhangxiaopa  
       2020-05-06 15:21:24 +08:00
    先想办法跑起来
    Nathanzheng
        4
    Nathanzheng  
       2020-05-06 15:26:32 +08:00   31
    先想办法跑路
    shiguiyou
        5
    shiguiyou  
       2020-05-06 15:27:32 +08:00
    先想跑路
    mmnsghgn
        6
    mmnsghgn  
       2020-05-06 15:29:32 +08:00
    先想办法跑
    ice2neet
        7
    ice2neet  
       2020-05-06 15:29:46 +08:00
    先想办法跑路起来
    yalin
        8
    yalin  
       2020-05-06 15:29:51 +08:00
    能问则问,能搜则搜( Google or IDE 全局搜索),尽可能的了解这个技术架构,能本地调试最好
    uxstone
        9
    uxstone  
       2020-05-06 15:35:38 +08:00
    跑路
    clayyj1210
        10
    clayyj1210  
       2020-05-06 15:36:13 +08:00
    先跑
    berumotto
        11
    berumotto  
       2020-05-06 15:36:32 +08:00
    想办法跑起来,先看用了哪些框架,如果有框架好办,去找框架的文档,没框架或自写的就比较麻烦
    huntcool001
        12
    huntcool001  
       2020-05-06 15:39:55 +08:00
    离职吧... 这种入职面试的时候就要问清楚
    Leigg
        13
    Leigg  
       2020-05-06 15:45:48 +08:00 via Android
    没文档没交接基本不用想了
    xuanbg
        14
    xuanbg  
       2020-05-06 15:59:27 +08:00
    外包出去
    LICOEVE
        15
    LICOEVE  
       2020-05-06 16:01:48 +08:00
    代码量不多的话 啃源码
    mjy123456
        16
    mjy123456  
       2020-05-06 16:02:56 +08:00
    先跑
    yukiloh
        17
    yukiloh  
       2020-05-06 16:04:25 +08:00 via Android
    哈哈哈哈跑起来…………
    ClericPy
        18
    ClericPy  
       2020-05-06 16:04:54 +08:00
    跑的起来你还能单步调试走一波

    跑不起来是怎么交接的... 话说你这问题的难度, 就像一道面试题一样开放
    paradoxs
        19
    paradoxs  
       2020-05-06 16:04:58 +08:00
    报错显示什么,截个图丢上来看看。
    murmur
        20
    murmur  
       2020-05-06 16:05:54 +08:00
    资金到位不,如果生产还能跑的话可以把 tomcat 直接拷过来,如果生产挂了的话就呵呵了
    nianyu
        21
    nianyu  
       2020-05-06 16:10:19 +08:00
    给你时间一点一点看还行 慢慢整理逻辑
    不给时间或者给的时间不够基本无解, 你根本不知道以前的业务逻辑 代码逻辑是什么样的. 有许多临时 hack 一下的代码,你不知道业务根本理解不了为什么这么写
    312ybj
        22
    312ybj  
       2020-05-06 16:10:37 +08:00   2
    我目前在改同事离职的 bug,写得跟狗屎一样,半点逻辑没有,他是写不下去才跑路的。 我在他跑路前问清楚了配置项的意义(半点注释没有,全是重复代码),现在还在改。
    你先把项目运行起来,然后走根据功能进行搜索, 前台访问的接口肯定在后台有对应 ,ctrl + \ 可以根据 URL 快速定位代码位置( idea 中),F11 可以在 idea 中加入 Bookmark,shift + F11 可以查看所有书签, 反正就是慢慢啃
    Mrun
        23
    Mrun  
       2020-05-06 16:11:40 +08:00
    跑不起来看懂个啥?
    leahoop
        24
    leahoop  
       2020-05-06 16:15:17 +08:00
    violetlai
        25
    violetlai  
       2020-05-06 16:24:10 +08:00
    一步一步跑 然后重构
    iamnotarobot0
        26
    iamnotarobot0  
       2020-05-06 16:55:23 +08:00
    先找文档
    再找人,讲解一下大概的架构
    实在不行,再看代码,上手调试,写单测,重构
    nicebird
        27
    nicebird  
       2020-05-06 17:15:37 +08:00
    两个人也没多大代码量,看个几天就差不多了吧
    annielong
        28
    annielong  
       2020-05-06 17:19:41 +08:00
    目测可能是 java
    wizardoz
        29
    wizardoz  
       2020-05-06 17:47:22 +08:00   1
    先把业务搞清楚,业务了然的情况下去看源码应该不难。
    如果想通过看源码来了解业务,本人不敢想,厉害一点的可能可以。
    otakustay
        30
    otakustay  
       2020-05-06 17:50:01 +08:00
    别看,去修几个 BUG
    pushback
        31
    pushback  
       2020-05-06 18:35:32 +08:00
    跑(路)起来
    pushback
        32
    pushback  
       2020-05-06 18:37:14 +08:00
    憋说了,今晚上就长跑十公里
    hakono
        33
    hakono  
       2020-05-06 18:57:39 +08:00 via Android
    方向错了,看代码之前你首先得要把整个业务流程搞懂了再去看,一切代码都是为业务服务的,这样才能搞懂项目里那匪夷所思的代码是干嘛的。
    nightwitch
        34
    nightwitch  
       2020-05-06 19:21:52 +08:00
    跑不起来还说什么。 至少要能确认手上的源代码和线上的是符合的吧,万一手上的代码落后线上的几十个版本你怎么搞
    gaigechunfeng
        35
    gaigechunfeng  
       2020-05-06 19:23:44 +08:00
    祖传代码确实比较痛苦
    lithbitren
        36
    lithbitren  
       2020-05-06 19:33:58 +08:00   1
    碰到过没有文档的祖传代码,十几级的调用栈都可以接受,看懂了,勉强全部重构了。
    后来碰到了几十级甚至更多的调用栈,直接放弃阅读了,独立于黑箱打补丁造轮子拉倒了。
    polo3584
        37
    polo3584  
       2020-05-06 19:39:23 +08:00
    跑得起来修修补补还行,跑不起来就放弃了
    ob
        38
    ob  
       2020-05-06 19:54:47 +08:00 via Android
    楼上的要笑死人,哈哈,先找到 main
    darksword21
        39
    darksword21  
    PRO
       2020-05-06 20:00:12 +08:00
    先花一周时间跑起来,然后需要写什么看看有没有类似的写过的 ctrl v 过来改。。 没别的招感觉。2016 年,那架构确实可能是 2006 或者 2001 的
    itechify
        40
    itechify  
    PRO
       2020-05-06 20:27:06 +08:00 via Android
    打码贴一下图?给各位老哥看下目录,猜测是什么后端什么前端才有的说
    Acoolda
        41
    Acoolda  
       2020-05-06 23:04:58 +08:00 via Android
    先跑起来,再慢慢改
    linvon
        42
    linvon  
       2020-05-06 23:15:49 +08:00
    楼里的评论越来越....
    IvanLi127
        43
    IvanLi127  
       2020-05-06 23:22:12 +08:00 via Android
    找一个同事,一起吐槽
    fixend
        44
    fixend  
       2020-05-06 23:36:44 +08:00 via Android   1
    我接过一个维护了十多年的项目,无数人接手过,而且都是毕业生接手的,代码极恶劣,无文档,无注释,无 svn 提交记录,各种不知为何注释起来的代码,重复类似功能的函数,大量永远不会调用的代码,变量一堆 a,b,c 这样命名。

    修了两个严重 bug 后,我看不都不看,直接整个重新写了,还好项目不大,二十几万行,重写后十万行不到。
    marcomarco
        45
    marcomarco  
       2020-05-07 07:37:58 +08:00 via iPhone
    要先明确一点,你是来上班挣钱的,你懂吧?
    zhw2590582
        46
    zhw2590582  
       2020-05-07 08:28:56 +08:00
    这就非常累了,跑吧
    oops1900
        47
    oops1900  
       2020-05-07 08:38:58 +08:00
    先删库后跑路
    hankli
        48
    hankli  
       2020-05-07 08:48:26 +08:00
    跑路吧
    AkiseAru
        49
    AkiseAru  
       2020-05-07 09:19:54 +08:00
    先跑路,这样没人交接很累啊
    hahaayaoyaoyao
        50
    hahaayaoyaoyao  
       2020-05-07 09:20:09 +08:00
    要外包吗? 我帮你重写一个
    kiracyan
        51
    kiracyan  
       2020-05-07 09:35:29 +08:00
    先跑起来 ,再了解业务。不过让你接手的项目居然跑不起来,跑路的优先级比较高
    Felldeadbird
        52
    Felldeadbird  
       2020-05-07 10:13:28 +08:00
    问人是肯定要的,除了问题,自己也要先在本地调试运行成功,根据 IDE 或者编译器 提示的错误信息 去修复好错误。项目跑起来了,就好做二开了。
    weipt
        53
    weipt  
       2020-05-07 10:34:06 +08:00
    如果以前的资料不全,那就靠你的经验了。
    如果你的经验不足,那就跑路吧
    VictorJing94
        54
    VictorJing94  
       2020-05-07 10:37:26 +08:00
    先找入口,从 homepage 看或者 main 函数看起,一手梳理业务一手梳理 db
    zhjie
        55
    zhjie  
       2020-05-07 10:46:50 +08:00
    啃得动是本分,啃不动就炒你。
    最好用的办法就是逃避。
    arvinsilm
        56
    arvinsilm  
       2020-05-07 11:08:44 +08:00   1
    建议列一堆致命性问题(可以随便编,反正也没人懂这个项目了),然后要求做一个新项目,不做二次开发。问题可以往安全性上靠,国企现在很在意这个。当然能不能撑得住,会不会背锅要你自己评估
    paoqi2048
        57
    paoqi2048  
       2020-05-07 11:21:15 +08:00
    快逃!
    keelng
        58
    keelng  
       2020-05-07 11:30:44 +08:00
    这种情况说服领导放弃就完了,自己重新组织团队写一个更省时省事,修改一个完全没有任何资料支撑的项目,改到你想 s
    silencil
        59
    silencil  
       2020-05-07 12:30:56 +08:00 via Android
    我这 200 多兆的项目也没有文档,还好跑起来了
    zhouwei520
        60
    zhouwei520  
       2020-05-07 12:35:15 +08:00
    如果有源码你看不懂的话,大概率你是无法重写的。
    框架方面建议使用谷歌搜索,一般都是套的别人的框架重构的。
    从业务到代码,多找业务问清业务流程,然后对照代码看。
    purensong
        62
    purensong  
       2020-05-07 14:21:05 +08:00
    看评论都说跑路的,我想问你们自己遇到也跑路吗,为什么不能先努力一下,至少把数据库删了再跑,避免坑害后人
    TesterCC
        63
    TesterCC  
       2020-05-07 14:26:36 +08:00
    看下能不能本地搭建开发环境跑起来,能本地跑起来的话还能再折腾下,不能的话参考前面朋友们的套路吧
    laike9m
        64
    laike9m  
       2020-05-07 15:01:48 +08:00
    @fixend 这个量级的项目你一个人重写工作量也相当大啊
    xingyuc
        65
    xingyuc  
       2020-05-07 16:41:53 +08:00
    @huntcool001 这种你搞懂了就稳了,除非他换系统
    ytmsdy
        66
    ytmsdy  
       2020-05-07 16:51:58 +08:00
    0.先跑起来,
    1.用户登陆开始看,跟踪整个 URL 配置,函数逻辑,数据库连接方式
    2.看看系统里面有没有查询模块,如果有那就到具体的页面,然后熟悉一下整个数据结构。
    3.修改的话,千万不要在老方法上做修改。最好的办法是把原来的函数复制一份,然后在函数入口上做相应的区分。
    万一出问题,直接把函数名字改回去就恢复了。
    spadger
        67
    spadger  
       2020-05-07 17:01:54 +08:00
    传说中的屎山?
    sunriz
        68
    sunriz  
       2020-05-07 19:33:03 +08:00
    重构代码整洁之道
    cpstar
        69
    cpstar  
       2020-05-07 19:44:39 +08:00
    能看源代码就好办了。甚至还能反演出开发者的思路。
    我经常干这种事情而且乐此不疲,还能在某些混淆了源码的地方找出一些端倪。

    方法很简单,就某个场景,逆向运转系统,调用关系一个一个捋。

    总之一件事:耐心。
    encro
        71
    encro  
       2020-05-08 09:48:57 +08:00
    你用了一个合格的 IDE 吗?
    你了解业务了吗?
    你熟悉代码基础语法了吗?
    你会搜索吗?

    如果以上回答是,你可以自己慢慢看代码了,
    如果回答否,那么是不可能看懂的。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5419 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 08:46 PVG 16:46 LAX 01:46 JFK 04:46
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86