V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
uiosun
V2EX  ›  问与答

大佬们,强类型语言,定义结构多了会有什么问题?

  •  
  •   uiosun · 2022-11-28 12:17:25 +08:00 · 814 次点击
    这是一个创建于 756 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前写 Go/C#,喜欢定义各种结构,看到 StackOverflow 上有人说“你当然可以将 Request / Response 都定义出来,但定义太多结构,会占用部分内存”。

    我是从弱类型语言转过来的( PHP/Python/JavaScript 都写过),转的核心原因就是强类型方便的定义结构和类型。

    特别喜欢把类型结构定义好——结构标准,类型固定,运算省心,IDE 能提示,心里会很舒服,算是代码洁癖之一。

    所以现在自己的项目有 30+ 个接口,每个接口都有声明好的请求、响应结构,再加上自己的习惯,就变成了:

    • 请求、响应结构;
    • 抽象对象结构;
    • 在多个抽象结构中存在的、为了复用而抽出来的结构;
    • ORM 模型结构。

    按照自己的需求规划,目前的结构数量翻个倍没问题,所以有点心慌,想问一下大佬们,这会占用很多内存吗?有啥办法衡量没有?

    如果结构真的很多、且真的会占用内存,怎么办,拆成微服务 + gRPC ?

    nightwitch
        1
    nightwitch  
       2022-11-28 12:22:53 +08:00 via Android
    😢30+个接口就在操心这事了。。3000 个再说吧
    uiosun
        2
    uiosun  
    OP
       2022-11-28 12:43:38 +08:00
    @nightwitch 那我就放心了,主要是有点摸不着底,毕竟没考虑过这玩意怎么加载、卸载的😂
    CEBBCAT
        3
    CEBBCAT  
       2022-11-28 13:02:37 +08:00 via iPhone   ❤️ 1
    第一点是要深深地记住,计算机界有很多人不是很懂回答问题。我当时初学 C 的时候搜怎么定义动态数组,百度知道一个回答说要 malloc 申请内存,很危险,建议别这么做,我居然信了,干,真是误人子弟

    第二点是可以学学 Linux 的 loader 、Go 的汇编生成(含逃逸分析)方面的东西,你就会知道到底什么在占内存。你想想你引用到的底层库又得有多少类型声明,九牛一毛而已

    最后……不要过早优化,在那之前学习好的编程风格就可以了
    uiosun
        4
    uiosun  
    OP
       2022-11-28 13:19:41 +08:00
    @CEBBCAT 感谢大佬,指了条明路哇!我研究研究
    Kilerd
        5
    Kilerd  
       2022-11-28 13:54:46 +08:00 via iPhone
    首先 python 是强类型语言
    uiosun
        6
    uiosun  
    OP
       2022-11-28 14:00:49 +08:00
    @Kilerd 喔!不好意思,可能是我写的都是些脚本,导致觉得它是弱类型。浅薄了浅薄了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5502 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:50 · PVG 13:50 · LAX 21:50 · JFK 00:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.