gpt4 book ai didi

protocol-buffers - 在 protobuf3 中使用 optional 检查可空性是一个好习惯吗?

转载 作者:行者123 更新时间:2023-12-05 03:37:05 27 4
gpt4 key购买 nike

我注意到他们在 protobuf 3.15 中带回了 optional。我正在尝试使用 optional 来检查字段是否存在。但我仍然不清楚这背后的哲学。

这是我的用例:

我正在提供一些接受 protobuf 作为我的输入的服务。但是客户端在我看来是不受信任的,因此我必须检查输入 protobuf 的可空性。

我期望的方式是,

  • 对于必填字段,要么已设置,要么为空,
  • 对于可选字段,我不在乎我可以只使用默认值,这不会导致我的系统出现任何问题

所以我最终将 optional 添加到每个不应为 null 的字段,以便我可以使用 hasXXX 来检查是否存在。这对我来说看起来很奇怪,因为从我的角度来看,这些文件实际上是 required,但我必须为它们添加 optioanl 关键字......我不是确定这是否是一个好习惯。原型(prototype)专家请给我一些建议。

此外,对于可空性检查,默认值对我来说根本没有意义,因为在许多情况下,零或空字符串通常有它们自己的含义。

最佳答案

proto3中optional的全部意义在于能够区分,例如:

  1. 没有为字段 Foo 指定值
  2. 字段 Foo 被显式分配了恰好是 proto3 默认值的值(零/空字符串/false/等)

在没有 optional 的 proto3 中:以上两者看起来相同(也就是说:字段被省略)

如果你不需要区分这两种情况:你不需要optional,但是使用optional也不是'不太可能造成太大伤害 - 最坏的情况是,一些额外的零/空字符串/假值被写入线路,但它们仍然很小

关于protocol-buffers - 在 protobuf3 中使用 optional 检查可空性是一个好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69441101/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com