Segurança de alterar o número do proto-campo
Por exemplo, se eu mudei de:
message Request {
int foo = 1;
}
para
message Request {
int bar = 1;
int foo = 2;
}
É seguro mudar foo
de 1 para 2? Os documentos dizem para não :,These numbers are used to identify your fields in the message binary format, and should not be changed once your message type is in use.
mas gostaria de saber por quê.
Respostas
Se você tiver uma versão serializada da mensagem gerada com a primeira versão, não poderá desserializar com a segunda versão da mensagem. Se você usar protobuf para gerar um modelo para armazenar em um banco de dados ou para ser publicado em um broker como o Apache Kafka, você precisa seguir a convenção. Se você usar buffer proto para gerar modelo e serviço para uso online, você não deve quebrar nada (se você irá regenerar todos os modelos)
Veja também a palavra-chave reservada para não reutilizar um número antigo. Leitura adicional também aqui