我有个原型:
enum Type {
UNDEFINED = 0;
SMALL = 1;
MEDIUM = 2;
BIG = 3;
}最后一个值被更改了(不是我):
enum Type {
UNDEFINED = 0;
SMALL = 1;
MEDIUM = 2;
VERY_BIG = 3;
}这种改变对我解析protobuf消息(包含大消息的消息)的能力有什么影响?解析二进制编码消息和文本编码消息之间有区别吗?
什么是最好的实践,不推荐大,并引入VERY_BIG值?
发布于 2018-06-14 18:44:16
如果您使用二进制protobuf格式,那么:没有问题。只有原始值作为varint发送,而不是作为名称发送。过去映射到BIG的数据现在将显示为VERY_BIG。你将无法区分两者之间。
更改模式和重新运行protoc可能会给您带来一些构建错误,直到您在自己的代码中修复相同的更改为止,但是protobuf本身不会在意,甚至不会注意到。
如果使用的是JSON格式,则需要对其进行测试。我对JSON规则知之甚少(我试图避免JSON输出)。
一般来说,重命名并不是一个好的选择。最好使用新的唯一值添加一个新条目,并简单地将旧条目标记为不推荐的,但请注意,您可能仍然期望旧值。
因为EnumValueOptions有一个deprecated标志,所以您应该能够对旧值使用[deprecated=true]来标记它的过时。
https://stackoverflow.com/questions/50857940
复制相似问题