![](/img/trans.png)
[英]How can I assign the nested Protobuf messages' values to the main message? C++
[英]How can I streamline complex nested protobuf validation in C++?
我在消息傳遞應用程序中使用Google協議緩沖區。 這些原型通常嵌套在幾個層次上,我們已經采納了谷歌的建議並使它們都是可選的。 protos可以描述許多不同類型的重疊消息 - 即Type == X的消息應該包含成員my_X,Type == Y應該包含my_Y。 此外,某些字段組合對應存在哪些字段以及它們應具有的值施加了其他限制。 改變原型的結構超出了我能做的范圍。
現在,所有這些驗證都是if..else語句的混亂。 如果案例沒有重疊,那可能是可行的,但驗證案例可能會對某個字段施加不同的限制,因此它可能會非常難看。 有沒有更好的辦法? 我的目標是使代碼更易於維護。 我稍微研究了仿函數/謂詞,看起來這可能會簡化問題,但看起來它仍然是一團糟。
如果代碼開始包含太多的ifs和elses,那么有時候表格驅動的方法就是解決方案。 Code Complete Edition 2的第18章通過大量示例很好地解釋了這個概念。 您也可以在本文中找到一些示例。
希望能幫到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.