今天对接的一个公司 看到接口文档我惊了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
yasumoto
V2EX    程序员

今天对接的一个公司 看到接口文档我惊了

  •  1
     
  •   yasumoto 2021-03-15 11:01:00 +08:00 24573 次点击
    这是一个创建于 1739 天前的主题,其中的信息可能已经有所发展或是发生改变。
    居然还有这种操作 备注字段 12345678910 (笑 cry )

    https://i.loli.net/2021/03/15/dnpyGJEbXekCr51.png
    138 条回复    2021-03-17 11:17:25 +08:00
    1  2  
    fengxianqi
        1
    fengxianqi  
       2021-03-15 11:05:33 +08:00   19
    别笑,任何程序的设计都有其历史原因
    66beta
        2
    66beta  
       2021-03-15 11:05:38 +08:00
    说不定人家就是碰到了什么特殊的业务场景,有时候研发部门就是这么卑微
    weizhen199
        3
    weizhen199  
       2021-03-15 11:06:21 +08:00
    也不奇怪吧,我这 db 里的 log 表我也留了 8 个空字段
    psirnull
        4
    psirnull  
       2021-03-15 11:07:22 +08:00   1
    这有什么笑的,说明保密意识优秀
    sagaxu
        5
    sagaxu  
       2021-03-15 11:07:59 +08:00 via Android
    十个领导一人一段批注
        6
    no1xsyzy  
       2021-03-15 11:09:30 +08:00   2
    见过 field41 field42 这样的
    其实需要的是一个 MongoDB
    dethan
        7
    dethan  
       2021-03-15 11:10:54 +08:00 via Android
    真的要看业务场景,有时候开发权限过低,连新增字段说不定都要层层审批的....
    MilkShake
        8
    MilkShake  
       2021-03-15 11:13:35 +08:00
    我见过备用字段更多的时候
    egen
        9
    egen  
       2021-03-15 11:15:40 +08:00   12
    这种一看就是老手呀
    huxins
        10
    huxins  
       2021-03-15 11:16:34 +08:00
    erp 这类这些很常见
    nickyang897897
        11
    nickyang897897  
       2021-03-15 11:17:46 +08:00   1
    笑啥,都是做一天和尚,撞一天钟,何必那么计较呢?
    bertonzh
        12
    bertonzh  
       2021-03-15 11:20:51 +08:00   1
    扩展性强
    drunkdog
        13
    drunkdog  
       2021-03-15 11:21:43 +08:00
    觉得害行!
    fkdtz
        14
    fkdtz  
       2021-03-15 11:23:35 +08:00   2
    有些系统重构时,为了避免再次踩入频繁变动的坑,是会预留一些字段的。踩坑踩怕了,知道疼了。
    wangxiaoaer
        15
    wangxiaoaer  
       2021-03-15 11:27:54 +08:00
    多个备注字段有啥问题吗?
    anzu
        16
    anzu  
       2021-03-15 11:30:07 +08:00
    以前在半个国企的时候经常见。当项目交付后,客户之后还有其它小需求,此时只需要改程序代码,而不必改数据库结构,甚至有的数据库数据涉及商业机密不让看更别说改,万一改乱就惨了。
    qjbcnrs
        17
    qjbcnrs  
       2021-03-15 11:45:41 +08:00
    狗东的文档
    ![UTOOLS_1615779923466.png]( https://i.loli.net/2021/03/15/TfZ4eNGgv1u3MJL.png)
    Renco
        18
    Renco  
       2021-03-15 11:46:27 +08:00
    虽然但是,感觉没什么问题
    nekoneko
        19
    nekoneko  
       2021-03-15 11:47:46 +08:00
    很正常,遇到对接的时候你就知道有多大作用了
    preach
        20
    preach  
       2021-03-15 11:48:57 +08:00
    如果是扩展字段无可厚非
    xuanbg
        21
    xuanbg  
       2021-03-15 11:49:58 +08:00   3
    @no1xsyzy 其实 json 字段也可以。如果不是祖传,设计这种无意义备用字段的程序员,技术视野之狭隘,真是令人无语
    PeterYang1996
        22
    PeterYang1996  
       2021-03-15 11:51:00 +08:00
    @sagaxu 有道理,哈哈哈
    FucUrFrd
        23
    FucUrFrd  
       2021-03-15 11:52:05 +08:00 via Android
    备注还是备用?
    quicknight
        24
    quicknight  
       2021-03-15 11:52:23 +08:00   1
    楼主新手吧
    dexterzzz
        25
    dexterzzz  
       2021-03-15 11:52:35 +08:00 via Android
    erp 领域的基本功能,拓展属性 /弹性域
    liuzhaowei55
        26
    liuzhaowei55  
       2021-03-15 11:58:11 +08:00 via iPhone   2
    新建表必有 extra,remark 两个字段 开发就是来填坑的
    sun1991
        27
    sun1991  
       2021-03-15 11:59:33 +08:00
    哎, 你见同一个字段 field10 的不同行里的值, 在不同代码段里代表完全不同意思么?
    tabris17
        28
    tabris17  
       2021-03-15 12:03:12 +08:00
    肯定是个被产品经理坑苦的开发
    lusi1990
        29
    lusi1990  
       2021-03-15 12:12:03 +08:00
    用用 db2 就知道了
    redtea
        30
    redtea  
       2021-03-15 12:18:01 +08:00   3
    千万条级别的表,加个字段试试如何不影响生产环境。
    BeautifulSoap
        31
    BeautifulSoap  
       2021-03-15 12:19:37 +08:00 via Android
    @xuanbg 用 json 可还行
    json 字段性能非常差,几十万,百万数据量的时候 query 就非常慢了,对于需要搜索的内容不应该用 json 字段
    zengming00
        32
    zengming00  
       2021-03-15 12:22:43 +08:00
    用 mongodb 不用这么设计,用 sql 的话其实挺正常的,数据量大了的时候突然要加个字段你就知道了
    no1xsyzy
        33
    no1xsyzy  
       2021-03-15 12:38:34 +08:00
    @xuanbg 那个系统是 SQL Server 2014,查了下好像 2016 才有 JSON Support…… 不过确实可能是乙方外包的祖传。

    顺便,推荐各位持 get-stuff-done 哲学的,去用用 Ponylang (开始推荐奇怪的语言)
    Vegetable
        34
    Vegetable  
       2021-03-15 12:41:31 +08:00
    这个的确有点好笑,但是,更搞笑的多了去了。
    xuanbg
        35
    xuanbg  
       2021-03-15 13:09:21 +08:00
    @BeautifulSoap 这种意义不明,与逻辑无关的内容也不会用来查询的吧。再说,field1 、field2 这样的字段能写条件查询?
    div id="r_10315026" class="cell">
    Hallelu
        36
    Hallelu  
       2021-03-15 13:12:02 +08:00
    正常现象,做 erp 的时候,经常都会预留几个字段来防止不时之需,extra_1,extra_2.....
    jasonkayzk
        37
    jasonkayzk  
       2021-03-15 13:13:45 +08:00
    这有啥搞笑的。
    我刚入职的时候,看到同事直接 select from table_1, table_2,还跟我说这叫联表操作,我直接震惊!
    Hystrix13
        38
    Hystrix13  
       2021-03-15 13:36:25 +08:00
    这有啥搞笑的 你不会预留字段吗 后面需求要加你咋办
    buxudashi
        39
    buxudashi  
       2021-03-15 13:52:08 +08:00
    恰恰是有经验的程序员干的!
    iyaozhen
        40
    iyaozhen  
       2021-03-15 13:52:38 +08:00
    很多原因吧 虽然有点 low
    1. MySQL 5.7 才支持 json,现在公司还只到 5.6 。存成 json 拿出来用,又给业务增加复杂性
    2. 换其它数据库成本更大
    3. 表很大,在线 DDL 有风险,所以预留个
    JackPJ
        41
    JackPJ  
       2021-03-15 13:56:44 +08:00
    作为一个产品,见过很多 toB 的系统预留扩展字段,就是为了解决后续需求可能在表中插入新字段的需求,单表数据量比较大。不知道有无更好的解决方案给大伙分享分享
    janxin
        42
    janxin  
       2021-03-15 13:59:20 +08:00
    这都是怪没给时间 23333
    cslive
        43
    cslive  
       2021-03-15 13:59:40 +08:00
    数仓里的吧,没有备注是看不懂的
    knightdf
        44
    knightdf  
       2021-03-15 14:21:07 +08:00
    没看过文档么?这有什么好笑的
    tankren
        45
    tankren  
       2021-03-15 14:25:20 +08:00
    很正常吧 这个备注是 comment 的翻译 中文是字段的描述 而不是说中文是该字段的备注
    yanulg
        46
    yanulg  
       2021-03-15 14:33:15 +08:00
    没见识的人还真多啊,等数据上千万了你也改表结构?
    a719031256
        47
    a719031256  
       2021-03-15 14:36:36 +08:00
    才 10 个,我同类型的字段加了 30 个,没法,业务需求
    someonedeng
        48
    someonedeng  
       2021-03-15 14:37:26 +08:00
    不得已而为之
    ClarkAbe
        49
    ClarkAbe  
       2021-03-15 14:40:11 +08:00 via Android
    建设银行的代扣也有....备注 1 备注 2
    kknd22
        50
    kknd22  
       2021-03-15 14:40:20 +08:00
    ERP 的弹性域
    预留的
    BeautifulSoap
        51
    BeautifulSoap  
       2021-03-15 14:43:03 +08:00
    @xuanbg 用 field1,field2 这种名称很大可能是最开始预留的字段。预留字段不知道将来干嘛那肯定就是 1,2,3,4 这样名字排下去了,所以这种将来可能用到的字段也有很大可能是需要检索的。json 字段是真的只适合用来存和取,一旦要搜的话速度慢到让人怀疑人生

    当然不预留字段根据需要添加字段是最好的,但是对于生产环境里的数据库的操作,往往不是程序员自己能决定的
    meeop
        52
    meeop  
       2021-03-15 14:43:51 +08:00
    这有啥,我 mysql 还预留了 15 个备用字段呢,这样后续加字段加索引的时候就不用改表改 po 改查询,只要简单把新字段 set 一下就完成了
    RRRoger
        53
    RRRoger  
       2021-03-15 14:48:19 +08:00
    这个很常见啊 ~
    tairan2006
        54
    tairan2006  
       2021-03-15 15:10:41 +08:00
    @BeautifulSoap 现在 json 可以加索引了。。。
    treemonster
        55
    treemonster  
       2021-03-15 15:10:53 +08:00
    这种设计很正常,不懂问题在哪里。。
    shawn102400
        56
    shawn102400  
       2021-03-15 15:22:54 +08:00   2
    年轻人见识少不懂事,稍微见识过几个老点的大型系统都不至于浅薄。
    Asuka0947
        57
    Asuka0947  
       2021-03-15 15:25:53 +08:00
    没事我见过连表名称都是 123456 的很正常
    ixuelei
        58
    ixuelei  
       2021-03-15 15:32:26 +08:00
    不要瞎猜了,这是上面规定要这样弄的。
    BeautifulSoap
        59
    BeautifulSoap  
       2021-03-15 15:32:41 +08:00
    @tairan2006 看了下文档,还真是。。。。不过只能针对 json 字段中特定的键创建索引,如果业务字段毕竟固定的话的确可以了。不过如果 json 里存的字段很多变的话,还是不太合适
    isnullstring
        60
    isnullstring  
       2021-03-15 15:41:51 +08:00
    这种应该是设计表时候提前预留的吧
    jing8956
        61
    jing8956  
       2021-03-15 15:46:00 +08:00 via Android
    我见过没上线的产品,.net core 3.1,用了 Entity Framework Core 也还这么整的,都这样了还这么整能有什么原因,不就是“增加学习成本”么
    neptuno
        62
    neptuno  
       2021-03-15 16:02:37 +08:00
    见过一个政府项目,sfzh-身份证号,jhz-结婚证,jyxkz-经营许可证
    juneva
        63
    juneva  
       2021-03-15 16:06:01 +08:00
    前公司都是 5 个 remark 起步
    YulChigga
        64
    YulChigga  
       2021-03-15 16:08:58 +08:00
    文件夹 123qwe 的都有
    chenny3
        65
    chenny3  
       2021-03-15 16:10:52 +08:00
    之前在 PCB 行业龙头国企待过,像这样预留字段的表时常可见
    leon9986666
        66
    leon9986666  
       2021-03-15 16:25:00 +08:00
    需要加字段的时候这样子还是挺方便的
    PopRain
        67
    PopRain  
       2021-03-15 16:26:32 +08:00
    有什么好笑的,如果要做数据复制、或者数据库不能轻易锁表,这样设计算超前考虑了,算考虑的比较全面好不好
    efaun
        68
    efaun  
       2021-03-15 16:29:17 +08:00
    @quicknight #24 +1 还是太年轻了
    ytmsdy
        69
    ytmsdy  
       2021-03-15 16:30:26 +08:00
    正常操作,多接几个屎山项目,就知道这些备注字段的重要性了!
    wangyzj
        70
    wangyzj  
       2021-03-15 16:55:52 +08:00   1
    zw1one
        71
    zw1one  
       2021-03-15 16:58:00 +08:00
    项目上线后,修改数据库字段成本过高吧。可能是技术成本,但通常是等领导流程审批的时间成本
    lixintcwdsg
        72
    lixintcwdsg  
       2021-03-15 17:02:11 +08:00
    这就是此接口牛逼,什么需求都接得下不用改 API 的意思,你要佩服这个设计人。
    shoushi
        73
    shoushi  
       2021-03-15 17:13:53 +08:00
    一般都会预留几个字段,用来应对不同客户的需求还不用改主分支代码
    cgpiao
        74
    cgpiao  
       2021-03-15 18:00:32 +08:00 via iPhone
    人家可能是 package 开发的公司,这种很正常。
    liangsaifei
        75
    liangsaifei  
       2021-03-15 18:03:13 +08:00
    @zhongjun96 其实这样也挺好。。毕竟起英文名字更头大。
    labulaka521
        76
    labulaka521  
       2021-03-15 18:41:46 +08:00
    学习了
    ragnaroks
        77
    ragnaroks  
       2021-03-15 19:00:04 +08:00
    见过一个这种的 php 写的 cms,自带几个主题,竟然可以一处不改,就能从企业门户变成信用卡收集站,还能变论坛
    helloworld2076
        78
    helloworld2076  
       2021-03-15 19:40:48 +08:00 via iPhone
    上家公司,如果数据库设计没有十个 rsv 字段,我会把数据库设计退回去。
    nicebird
        79
    nicebird  
       2021-03-15 19:49:49 +08:00
    这是备用的,实际上是种解耦。实际用途和字段名分离,依靠注释重新建立关系。
    young1lin
        80
    young1lin  
       2021-03-15 19:52:09 +08:00
    @zhongjun96 让我想起了我第一家公司,什么 OD01,OD07,KS01,ks36,没有注释,根本看不懂
    ruoxie
        81
    ruoxie  
       2021-03-15 19:55:54 +08:00
    前两周刚遇到过,备注 1,备注 2,备注 3 。。。没人能确定有多少,本来是直接存 json 字符串,然后产品要求能精确导出备注几
    tesguest123
        82
    tesguest123  
       2021-03-15 19:57:12 +08:00 via iPhone
    题主一看就是年轻的程序员,一般我都是预留 5 个以上的无用字段,数据表具有扩展性。
    tesguest123
        83
    tesguest123  
       2021-03-15 19:57:42 +08:00 via iPhone
    @tesguest123 要不然太累了
    aQI9F2Sb927YPj7I
        84
    aQI9F2Sb927YPj7I  
       2021-03-15 20:02:10 +08:00
    如果你看到了这个接口文档后,选择了拒绝对接,那么这个帖子还有一些营养。
    lj2016
        85
    lj2016  
       2021-03-15 20:06:38 +08:00 via iPhone
    这种太正常了,后续有增加会很方便
    gam2046
        86
    gam2046  
       2021-03-15 20:07:22 +08:00
    个人觉得这个设计没什么问题,基本上预留一些升级的空间。上线一段时间后,新增需求,改数据库是非常要命的一件事。而且正规的流程,开发人员很可能没有权限操作数据库,还需要 DBA 的配合(甚至行政手段的接入),生产环境飞针走线,太可怕了。

    至于可读性差,确实没什么办法,预留接口,天知道到时候甲方爸爸会提出什么需求来。全靠文档支撑。
    vinsony
        87
    vinsony  
       2021-03-15 20:20:58 +08:00
    你太年轻了。我有 str_1 2 3 4 5 、int_1 2 3 4 5........
    levelworm
        88
    levelworm  
       2021-03-15 20:34:17 +08:00
    给你看个才在 reddit 上看到的,和你是反的。人家是 30 个字段,29 个是反的,还有 1 个把其他 29 个字段的内容全囊括进去了。。。

    Every database entry consisted of:

    Column 1: $itemID, $stuff, $morestuff, $evenmorestuff ...

    Columns 2-30: NULL
    aaronlam
        89
    aaronlam  
       2021-03-15 21:12:50 +08:00
    之前呆过的国企内开发的系统也是预留了很多这些弹性域
    xwcs
        90
    xwcs  
       2021-03-15 21:43:31 +08:00
    @young1lin 医疗软件这块太多这种字段了
    tairan2006
        91
    tairan2006  
       2021-03-15 22:49:09 +08:00
    你们吵个球…根据《阿里巴巴 Java 编程手册》里面数据库部分,明确说明:

    禁止在表中建立预留字段
    预留字段的命名很难做到见名识义
    预留字段无法确认存储的数据类型,所以无法选择合适的类型
    对预留字段类型的修改,会对表进行锁定,修改字段类型的成本往往大于增加

    MySQL5.6 之后加列就可以有条件的避免锁了,8.0 之后就更高效了…所以楼上嘲笑楼主年轻的,做的业务比阿里流量还大?
    MaiKuraki
        92
    MaiKuraki  
       2021-03-15 22:57:57 +08:00
    这个图床太恶心了,不能直接显示图片,还要点击才能显示
    boshok
        93
    boshok  
       2021-03-15 23:29:04 +08:00   2
    @tairan2006 什么都跟阿里比?针对不同业务采取不同方式有问题吗?谁都是互联网企业?也都是用 MYSQL ?
    iamv2er
        94
    iamv2er  
       2021-03-16 00:35:09 +08:00 via iPhone
    刚好碰到这个场景 预留后面直接改名快一点 要不然数据库数据很多 会影响生产环境
    msg7086
        95
    msg7086  
       2021-03-16 01:02:44 +08:00
    @tairan2006 要真能做到比阿里流量还大,体量这么大了就可以自己研发数据库系统了,还需要预留字段?
    阿里背后几十万台服务器的算力,你做外包给甲方也整上几千台服务器吗。
    Iamnotfish
        96
    Iamnotfish  
       2021-03-16 01:33:16 +08:00
    那你们是没见过传统行业开发的需求,我见过一个 POS 系统,字段全是 F01,F02,F03 这种,一直到 F9999 。连字段的 WIKI 都没有,全靠猜。
    mikael
        97
    mikael  
       2021-03-16 07:18:09 +08:00   1
    可以看出当初设计这表的人怀着远大的目标,已经知道这个表以后肯定还要承受更多的字段
    diyisoft
        98
    diyisoft  
       2021-03-16 07:54:13 +08:00
    “少见多怪”(褒义),哈哈哈
    有些场景是需要这样的。
    uilvn
        99
    uilvn  
       2021-03-16 08:17:52 +08:00   1
    salesforce 底层表都是这么设计的。所有的表字段都是占位符,实际内容由 meta 表解释。
    bwd1991
        100
    bwd1991  
       2021-03-16 08:33:47 +08:00   1
    @jasonkayzk 加上 where 条件还真是内联查询
    1  2  
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2906 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 77ms UTC 14:07 PVG 22:07 LAX 06:07 JFK 09:07
    Do have faith in what you're doing.
    ubao msn 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