Как спроектировать будущее дополнительное значение перечисления в буферах протокола?

Одной из привлекательных особенностей протокольных буферов является то, что они позволяют расширять определения сообщений, не нарушая код, использующий старое определение. В случае перечисления согласно документации:

поле с типом перечисления может иметь в качестве значения только одну из указанного набора констант (, если вы попытаетесь предоставить другое значение, синтаксический анализатор относитесь к нему как к неизвестному полю )

, поэтому, если вы расширите перечисление и используете новое значение, то поле с этим типом в старом коде будет неопределенным или будет иметь значение по умолчанию, если оно есть.

Как с этим справиться, зная, что в будущем к перечислению могут быть добавлены дополнительные значения?

Один из способов, который приходит на ум, — определить «неопределенный» член перечисления и сделать его значением по умолчанию,тогда старый код узнает, что ему было отправлено что-то, что он не может интерпретировать. Разумно ли это, есть ли лучшие способы справиться с этой ситуацией?

30
задан glennr 1 May 2012 в 04:19
поделиться