V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Goooooos
V2EX  ›  Java

吐槽下 Google 开源的组件

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

    每次升级依赖都要小心翼翼,一不小心就出现不兼容

    • jetcd
    • grpc-java
    • guava
    10 条回复    2024-01-13 11:42:47 +08:00
    weijancc
        1
    weijancc  
       315 天前   ❤️ 1
    Google 的 gson 会将 json 中的数值解析成 double, 也是蛮坑的
    kingmo888
        2
    kingmo888  
       315 天前
    所以非升不可嘛?
    Goooooos
        3
    Goooooos  
    OP
       315 天前
    @kingmo888 总有时候不得不升
    kingmo888
        4
    kingmo888  
       315 天前
    @Goooooos 想起了前年 12 月吧,生产环境上 py311 ,赶上内存泄漏,日常 1G 内存,1 周跑到 32G.哈哈
    nothingistrue
        5
    nothingistrue  
       315 天前
    如果你紧跟 Java 最新版本,那么可能会更容易碰见不兼容。当你依赖的基础组件是敏捷开发的,而你自己有不是敏捷开发,那被升级兼容性问题坑是早晚的事。

    你最好也是跟着一起敏捷开发——这要求近乎 100%自动单元测试,虽然不能避免兼容性问题,但是能第一时间爆出问题让你去解决。
    gongxuanzhang
        6
    gongxuanzhang  
       315 天前
    一切兼容问题都可以用测试解决
    kuanat
        7
    kuanat  
       315 天前   ❤️ 5
    很多时候不兼容的改动都是“无意识”的,开发者以为修改是向后兼容的,但实际上不是。这种错误我犯过不知道多少次了……


    关于向后兼容这个话题,我推荐两个讲座,都有视频和讲义:

    - How to design a Linux kernel interface, https://archive.fosdem.org/2016/schedule/event/design_linux_kernel_api/

    - Detecting incompatible changes, https://sourcegraph.com/blog/go/gophercon-2019-detecting-incompatible-api-changes

    简单做个总结。Linux kernel-userspace API 早期的失误造成的影响已经持续了几十年,很多还将继续影响下去。这些失误的来源多数是设计者想象不到下游开发者会以什么样的方式去使用这些 API 。

    规避的措施就是自动化测试,而自动化测试需要对 specification 进行规范化。实际上推动了开发流程的改变,即先公开规范和 API 设计,提供实例代码,接受反馈并修改设计方案,最后再实现功能和测试。而不是过去的先做实现,然后公开 API 接口的模式。

    (这个事情做到极致大概类似于 amazon ,先开发布会,然后再开发)

    第二个讲座虽然是 Golang 的,但指导意义很大。核心是如何从技术上自动判定某个改动是否会影响兼容性,进而对如何编写“面向未来可兼容扩展”的 API 接口提供理论支持。Golang 的开发团队为 Go1 的兼容性做了很大的努力,有非常多的案例经验可以参考借鉴。
    Knife42
        8
    Knife42  
       314 天前
    @kuanat 大佬好,冒昧打扰了。v 站好像没有私信,我就直接在这说了。我是刚才看到你的回答 https://v2ex.com/t/1007645#r_14194875 感觉学到了很多,好奇之下看了你别的回答,意外发现对我来说都很有启发。想了解下大佬你有别的社交账号吗?或者 github id 是什么?想关注 🙏
    kuanat
        9
    kuanat  
       314 天前   ❤️ 1
    @Knife42 #8

    自我定位是 long time lurker 所以没有什么社交账号。

    v2ex 发帖的初衷是想在 AI 生成内容的时代留下一点有价值的东西。
    Knife42
        10
    Knife42  
       313 天前
    @kuanat 明白,那大佬有博客啥的吗?总之感谢你的分享,祝天天开心!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1118 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 23:00 · PVG 07:00 · LAX 15:00 · JFK 18:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.