几百个表,字段名没有意义,也没有 ERD,代码改了十几年,很多看不懂,怎么办? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Rocketer
V2EX    程序员

几百个表,字段名没有意义,也没有 ERD,代码改了十几年,很多看不懂,怎么办?

  • &nbp;
  •   Rocketer 2021-01-23 12:36:44 +08:00 via iPhone 3819 次点击
    这是一个创建于 1724 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近接了个项目,给客户的内部办公系统加一些功能。

    本以为很容易,结果代码拿来一看,是十几年前的老系统,最古老的代码还是 VB 写的。十几年间改过好几次,明显不是同一拨人改的,风格各异。更痛苦的是数据库有几百个表,字段名却没有意义,还没有 ERD (事实上什么文档都没有)。

    现在只能一边读源码一边猜,进度缓慢。不知大家有没有类似的经验,这种项目应该怎么做?

    撂挑子已经不可能了,赔不起违约金,也不能加钱(钱其实给的不少),只能硬着头皮做。求大佬指点,这种项目如何快速上手?
    22 条回复    2021-04-05 08:58:56 +08:00
    v2webdev
        1
    v2webdev  
       2021-01-23 12:58:02 +08:00 via Android
    一个项目,得有好的文档,或者清晰的代码风格和项目结构,或者能询问原作者,才能快速上手。你说的这个项目,明显不满足这些要求。
    xiaomu8
        2
    xiaomu8  
       2021-01-23 13:23:10 +08:00
    试试看只管你要改的那部分源码加数据库。
    learningman
        3
    learningman  
       2021-01-23 13:40:06 +08:00
    再开一个表呗,勉强把要用的数据倒出来,自己的数据自己开个表存
    别想着跨表查询啥的了,完工就行
    fox0001
        4
    fox0001  
       2021-01-23 13:57:09 +08:00
    只能硬啃 + 记录。

    另外,看看 SQL 语句、视图、存储过程、触发器等,有助于理解
    Rocketer
        5
    Rocketer  
    OP
       2021-01-23 14:05:31 +08:00 via iPhone
    @learningman #3 谢谢,这个办法不错,可以试试
    Hconk
        6
    Hconk  
       2021-01-23 14:40:01 +08:00 via iPhone
    @learningman 可能有这么多表都是这样搞出来了,
    learningman
        7
    learningman  
       2021-01-23 14:47:09 +08:00
    @Hconk 屎山都是这么堆起来的
    wangyanrui
        8
    wangyanrui  
       2021-01-23 14:53:59 +08:00
    几个需求后就上手了,历史包袱而已 PM

    手动狗头
    340244120w
        9
    340244120w  
       2021-01-23 15:24:09 +08:00 via iPhone
    如果是加需求的话,找个差不多的功能,debug 一步一步照着加了
    annielong
        10
    annielong  
       2021-01-23 16:15:33 +08:00
    追踪 sql 语句,对比输入数据,
    HENQIGUAI
        11
    HENQIGUAI  
       2021-01-23 16:46:57 +08:00
    边猜边写,边写边猜,写着写着就会了。
    Kasumi20
        12
    Kasumi20  
       2021-01-23 16:50:15 +08:00
    好歹有源码,比搞反编译,动态调试的好多了
    ttys001
        13
    ttys001  
       2021-01-23 20:52:12 +08:00
    听上去推倒重来似乎更实际一点?包装下还能再加钱。
    lihongming
        14
    lihongming  
       2021-01-24 03:21:19 +08:00 via iPhone
    我也在经历类似的情况,很清楚楼主的感受,但没什么好办法,只能慢慢去理解。
    与纯旁观者不同的是,我还能想象到楼主看到某些回复时的感受都说了没有 XX,也不能 XX,你还说 XX 好、XX 妙、谁用 XX 谁知道……这还用你说吗?什么都有谁会跑来问这种问题?
    问题是客观的,如果你没有解决问题的思路,也请不要说风凉话。


    感同身受,易怒勿怪。
    jzmws
        15
    jzmws  
       2021-01-24 09:31:47 +08:00
    1. 先从页面入手,定下页面输入和对应表关系
    2.结合代码再看看
    jzmws
        16
    jzmws  
       2021-01-24 09:32:31 +08:00
    如果是老系统 名字先按照拼音>>英文
    aguesuka
        17
    aguesuka  
       2021-01-24 10:56:15 +08:00 via Android
    你也做成一坨,sql 字段取名成 o0o0OO0
    sprite82
        18
    sprite82  
       2021-01-24 16:42:34 +08:00
    我很奇怪,接之前都不需要评估一下这个项目的吗?
    myCupOfTea
        19
    myCupOfTea  
       2021-01-25 09:47:01 +08:00
    以后接之前一定要评估下
    smallpython
        20
    smallpython  
       2021-01-25 10:02:07 +08:00
    @aguesuka 然后每个字段名只是 0Oo 的数量和位置不同
    Rocketer
        21
    Rocketer  
    OP
       2021-01-25 10:41:14 +08:00 via iPhone
    @sprite82 会评估需求,毕竟得报价。但不签完合同看不到源码呀。
    buddie
        22
    buddie  
       2021-04-05 08:58:56 +08:00
    顺带想问问,有没有办法能够方便看到数据库的变化呢?我想的是,监控变化,跑去页面做个操作,然后看数据库发生了什么变化,从而理解该部分的逻辑。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5159 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 05:43 PVG 13:43 LAX 22:43 JFK 01:43
    Do have faith in what you're doing.
    ubao 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