设计思考 – Protocol Buffers 3 为什么这样设计
💡
原文中文,约4000字,阅读约需10分钟。
📝
内容提要
协议缓冲区3移除了“必需”和“可选”关键字,允许在数据正确性上有更大的灵活性。它将空值和默认值视为等同,简化了设计并减少了存储空间。这与“少即是多”的原则一致。
🎯
关键要点
- 协议缓冲区3移除了'required'和'optional'关键字,提供了更大的数据正确性灵活性。
- 空值和默认值被视为等同,简化了设计并减少了存储空间。
- 数据的正确性检查应由应用程序的每个角色自行负责,而不是由protobuf强制执行。
- proto3将基本类型的null视为预设值,可能导致数据处理错误。
- 谷歌的设计使得protobuf的基本类型更贴近主流静态语言,避免了动态语言中的常见错误。
- 使用包装类型(如Int32Value)来表示可选字段,提供了类型检查的灵活性。
- 删除'required'和'optional'关键字后,设计变得更加稳固,语义更精准,存储空间更精简。
- 设计原则'少即是多'在协议缓冲区3中得到了体现。
➡️