V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Rocketer
V2EX  ›  程序员

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

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

    本以为很容易,结果代码拿来一看,是十几年前的老系统,最古老的代码还是 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   ·   实用小工具   ·   1327 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 17:35 · PVG 01:35 · LAX 09:35 · JFK 12:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.