Да, это на 100% безопасно.Thrift имеет дело только с внутренними идентификаторами полей.Имена структуры, а также имена аргументов метода используются для генерации имен полей только в сгенерированном коде.Они даже не идут по проводам.
Кроме того, это рекомендуемый способ устаревания полей.Даже в случае, когда поле полностью удалено, его следует закомментировать, но оставить его в IDL, чтобы предотвратить случайное повторное использование числового идентификатора поля.
Единственное место, где имена используются какИмена с вызовами методов службы .Методы не имеют числовых идентификаторов, в этом случае используется имя.Изменение имени фактически объявляет новый метод.
TL; DR
С технической точки зрения
- Все имена в Thrift IDL могут быть изменены по мере необходимости, кроме...
- Имена методов не могут быть изменены (если вы не знаете, что делаете)
Что касается совместимости на уровне кода, любой потребитель вашего API будет высоко ценить его, если вы избегаете слишком частого изменения имен полей.
См. также
Хорошее прочтение по этой теме: "Отсутствующее руководство" Дивакера Гупты .В нем также подробно рассматриваются плюсы и минусы optional
и required
, которые также следует учитывать перед удалением полей - в противном случае вы можете столкнуться с нарушением совместимости IDL.