protocol-buffers - 删除 protobuf 中的字段
问题描述
我有这样的 protobuf 消息:
message MyMessage{
string foo = 1;
int toBeRemovedBar = 2 [deprecated = true];
string zag = 3;
}
toBeRemovedBar属性不再需要,需要删除。根据此处和此处的指南,我可以保留字段名称或编号。这里的最佳做法是什么?
- 保留字段编号或名称
- 保留字段编号和名称
保留字段编号只会阻止字段编号的重复使用。无法阻止重复使用字段名称。类似的论点适用于仅保留字段名称。
那么,删除属性的正确方法是保留字段名称和编号,如下所示?
message MyMessage{
string foo = 1;
reserved 2;
reserved "toBeRemovedBar";
string zag = 3;
}
解决方案
您应该保留字段编号。这将防止使用相同的标签添加新字段,这将导致运行旧版本且已编译遗留字段的任何用户的线路不兼容。从线路兼容性的角度来看,重用名称是好的,尽管这样做可能会引起一些混乱。
推荐阅读
- node.js - 如何在express中调用api?
- python-3.x - 遍历 id 列表作为 API 调用中的参数
- pointers - 在 pintOS 中,如何在 unsigned int 中保存内存地址?
- php - Laravel 用记住不工作来加强登录
- variables - Ansible 使用变量转换为其他变量
- json - OpenAPI 3.0 中属性的交叉依赖
- python - 为什么在运行 imageJ 宏的 Python 中出现“没有匹配的重载”错误
- swift - 文本字段背景图像 Aspect fit 限制了 swiftUI 中 iPad 的宽度
- parsing - 如何评估具有不同操作的字符串
- c++ - 刷新接收器写入器以防止将所有样本加载到内存中?