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

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

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

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

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

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

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

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

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

    总之一件事:耐心。
    encro
        71
    encro   88 天前
    你用了一个合格的 IDE 吗?
    你了解业务了吗?
    你熟悉代码基础语法了吗?
    你会搜索吗?

    如果以上回答是,你可以自己慢慢看代码了,
    如果回答否,那么是不可能看懂的。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1134 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 19:38 · PVG 03:38 · LAX 12:38 · JFK 15:38
    ♥ Do have faith in what you're doing.