Я использую протокольные буферы, и все работает нормально. за исключением того, что тот факт, что я не понимаю - зачем мне пронумерованные теги в файле proto
:Буферы протокола - уникальный пронумерованный тег - уточнение?
message SearchRequest {
required string query = 1;
optional int32 page_number = 2;
optional int32 result_per_page = 3;
}
Конечно, я прочитал docs:
Как вы можете видеть, каждый поле в определении сообщения имеет уникальный нумерованный тег . Эти теги используются для идентификации ваших полей в двоичном формате сообщения и не должны изменяться после использования вашего сообщения .
Я не понял, какая разница, если я его изменю. (Я буду создавать новую прото и собрать его - так почему не заботится)
пронумерованные поля в определениях прото устраняет необходимость в версии проверки, которая является одной из явно указанных мотивов Разработка и реализация протокольных буферов. Как разработчик документации государств, протокол был разработан в рамках, чтобы избежать «гадкого код», как это для проверки версии протокола:
if (version == 3) {
...
} else if (version > 4) {
if (version == 5) {
...
}
...
}
Вопрос
Это только меня или это полностью непонятно?
позвольте мне задать его по-другому:
Если у меня есть прото файл, как вышеуказанный файл, а затем изменить его на:
message SearchRequest {
required string query = 3; //reversed order
optional int32 page_number = 2;
optional int32 result_per_page = 1;
}
Что волнует? Я повторно компилирую и добавляю файл (я делал это несколько раз за последнюю неделю).
Что мне не хватает? можете ли вы предоставить человеко-человеческое объяснение для этих пронумерованных тегов?
'Что это за дело? На мой взгляд, вы делаете здесь замечательный момент. Если вам действительно не нужна обратная совместимость, тогда совершенно бесполезно явно указывать числа. Они могут (и для моего небольшого внутреннего проекта) автоматически создаваться. – gromit190