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

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

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

    某国企工作,接手一个 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
    先想跑路
    zhengjian
        6
    zhengjian  
       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
    外包出去
    miaoxinwei
        15
    miaoxinwei  
       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  
       2020-05-06 20:00:12 +08:00
    先花一周时间跑起来,然后需要写什么看看有没有类似的写过的 ctrl v 过来改。。 没别的招感觉。2016 年,那架构确实可能是 2006 或者 2001 的
    oneisall8955
        40
    oneisall8955  
       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
    如果有源码你看不懂的话,大概率你是无法重写的。
    框架方面建议使用谷歌搜索,一般都是套的别人的框架重构的。
    从业务到代码,多找业务问清业务流程,然后对照代码看。
    paulee
        61
    paulee  
       2020-05-07 13:28:07 +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   ·   实用小工具   ·   2661 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 06:02 · PVG 14:02 · LAX 22:02 · JFK 01:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.