设计思考 – Protocol Buffers 3 为什么这样设计

💡 原文中文,约4000字,阅读约需10分钟。
📝

内容提要

协议缓冲区3移除了“必需”和“可选”关键字,允许在数据正确性上有更大的灵活性。它将空值和默认值视为等同,简化了设计并减少了存储空间。这与“少即是多”的原则一致。

🎯

关键要点

  • 协议缓冲区3移除了'required'和'optional'关键字,提供了更大的数据正确性灵活性。
  • 空值和默认值被视为等同,简化了设计并减少了存储空间。
  • 数据的正确性检查应由应用程序的每个角色自行负责,而不是由protobuf强制执行。
  • proto3将基本类型的null视为预设值,可能导致数据处理错误。
  • 谷歌的设计使得protobuf的基本类型更贴近主流静态语言,避免了动态语言中的常见错误。
  • 使用包装类型(如Int32Value)来表示可选字段,提供了类型检查的灵活性。
  • 删除'required'和'optional'关键字后,设计变得更加稳固,语义更精准,存储空间更精简。
  • 设计原则'少即是多'在协议缓冲区3中得到了体现。
➡️

继续阅读