协议缓冲区的吸引人的特性之一是它允许您在不破坏使用旧定义的代码的情况下扩展消息定义。根据文档,如果是枚举:
具有枚举类型的字段只能将指定的一组常量作为其值(如果您尝试提供不同的值,解析器会将其视为未知字段)
因此,如果您扩展枚举并使用新值,则旧代码中具有该类型的字段将未定义或具有其默认值(如果有)。
知道将来枚举可能会增加额外的值,什么是处理这个问题的好策略?
想到的一种方法是定义枚举的“未定义”成员并将其设为默认值,然后旧代码将知道它已发送无法解释的内容。这是明智的,有没有更好的方法来处理这种情况?