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

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

  •  
  •   TowerLi · May 6, 2020 · 13962 views
    This topic created in 2373 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

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

    如果以上回答是,你可以自己慢慢看代码了,
    如果回答否,那么是不可能看懂的。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4797 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 262ms · UTC 09:18 · PVG 17:18 · LAX 01:18 · JFK 04:18
    ♥ Do have faith in what you're doing.