Плоские буферы: разные имена полей, но одинаковое смещение

TLDR: изменено имя поля в спецификации после сериализации; десериализованный объект по-прежнему имеет то же значение, так что все в порядке; но есть ли у них какие-либо побочные эффекты, о которых я должен знать?

У меня есть спецификация плоского буфера, определенная в файле .fbs. Я сериализую свой объект в плоский буфер, определенный этой спецификацией.

Теперь я меняю имя одного поля в таблице. Скажем, я меняю foo на bar

Я десериализую плоский буфер в объект моего языка программирования.

Я обнаружил, что то же значение, которое было вставлено для поля foo, теперь является значением для bar.

Это поведение, которое я хочу. Насколько я понимаю, значения определяются на основе смещения поля, поэтому фактическое имя поля не должно иметь значения.

Однако мне интересно, есть ли какой-либо побочный эффект от того, что я сделал?


person nz_21    schedule 09.07.2020    source источник


Ответы (1)


Да, вы можете полностью изменить название поля. Единственным побочным эффектом является то, что вы нарушаете сгенерированный API: любые вызывающие объекты должны быть изменены, чтобы использовать новое имя.

Ответ на ваш вопрос также есть в https://google.github.io/flatbuffers/flatbuffers_guide_writing_schema.html в разделе Примеры эволюции схемы вместе с другими.

person Aardappel    schedule 09.07.2020