Каков наилучший способ отказаться от поля в Protocol Buffer v3, зарезервировано против deprecated = true? - PullRequest
1 голос
/ 02 марта 2020

При использовании протокола Buffers версии 3, как я вижу, есть два способа объявить устаревшими поле:

Либо используя поле устаревания с использованием тегов:

message MyMessage {
    string deprecated_my_field = 1 [deprecated=true];
}

Или создание зарезервированного поля ID:

message MyMessage {
    reserved 1; // Deprecated "my_field"
}

Я склоняюсь к reserved, так как с тех пор никто не сможет использовать это поле.

Это плохая идея?

1 Ответ

1 голос
/ 02 марта 2020

Оба будут работать; первая опция сохраняет определение в модели, поэтому к нему все еще можно получить доступ и запросить - но оно может генерировать предупреждение о сборке, когда доступно (для клиентов, которые обновляются из схемы). Это может иметь полезные приложения в некоторых случаях.

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

В некоторых случаях более мягкое «пометить его как предупреждение о сборке, но разрешить доступ» может оказаться предпочтительным; в других - жесткое «этого не существует!» подход чище. Это субъективно.

Любой из них в принципе сделает работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...