Мы вводим буферы протокола в качестве нового транспорта для некоторых RPC-сервисов. Поскольку есть сопротивление ручному перемещению данных между различными типами похожих объектов, я могу предвидеть, что экземпляры Buffer протокола передаются в стек немного выше, чем только для интерфейса сервера RPC.Использование буфера протокола в качестве общего объекта данных?
Это что-то, чего я должен стараться избегать? Безопасно ли обрабатывать объект буфера протокола, например, простой держатель данных, с удобным удобством, чтобы он мог быстро и эффективно преобразовываться в двоичный файл и из него?
Другая причина, по которой я считаю это хорошим способом создания объектов данных, заключается в том, что понятие обязательных/необязательных полей и автоматически созданный интерфейс построителя.
Я думаю, что факт, что они неизменяемы, фактически помогает, а не болит, когда дело доходит до использования буферов протокола, подобных этому. Они являются неизменяемыми объектами ценности, такими как String. –
Это, безусловно, помогает в некоторых случаях, когда вы можете писать код в функциональном стиле. Отчасти это зависит от проблемы, а отчасти и от разработчиков :) –
Неизменяемость действительно помогает в некоторых случаях, по неизвестным причинам существуют некоторые публичные конструкции с дюжиной + или около того параметров, все они назначаются конечным полям. Строитель - великий, но утомительный и шаблонный, чтобы писать каждый раз. Также сложно получить логику требуемого и необязательного права, чтобы метод build() взорвался, если обязательные поля были опущены. –