删除protobuf中的字段

问题描述

我有一个这样的protobuf消息:

message MyMessage{
    string foo = 1;
    int toBeRemovedBar = 2 [deprecated = true];
    string zag = 3;
}

toBeRemovedBar 属性不再需要,需要删除。 按照herehere的准则,我可以保留字段名称或数字。 这里的最佳做法是什么?

保留字段号将仅阻止字段号的重用。无法防止重复使用字段名称。类似的论点对于仅保留字段名称很有用。

那么,删除属性的正确方法是保留字段名和数字,如下所示?

message MyMessage{
    string foo = 1;

    reserved 2;
    reserved "toBeRemovedBar";

    string zag = 3;
}

解决方法

您应该保留字段编号。这将防止使用相同的标签添加新字段,这将导致任何运行旧版本并编译了旧字段的用户的电线不兼容。从电线兼容性的角度来看,重用名称是可以的,尽管这样做可能会引起一些混乱。

,

对我来说似乎很好。

这样,您可以防止将来再使用字段号和名称。我在一个工作项目中做了同样的事情,因为我必须确保字段号和名称都不会被再次使用。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...