如何在C ++中简化复杂的嵌套protobuf验证?

时间:2010-07-07 19:54:57

标签: c++ validation protocol-buffers

我在消息传递应用程序中使用Google协议缓冲区。这些原型通常嵌套在几个层次上,我们已经采纳了谷歌的建议并使它们都是可选的。 protos可以描述许多不同类型的重叠消息 - 即Type == X的消息应该包含成员my_X,Type == Y应该包含my_Y。此外,某些字段组合对应存在哪些字段以及它们应具有的值施加了其他限制。改变原型的结构超出了我能做的范围。

现在,所有这些验证都是if..else语句的混乱。如果案例没有重叠,那可能是可行的,但验证案例可能会对某个字段施加不同的限制,因此它可能会非常难看。有没有更好的办法?我的目标是使代码更易于维护。我稍微研究了仿函数/谓词,看起来这可能会简化问题,但看起来它仍然会变得一团糟。

1 个答案:

答案 0 :(得分:0)

如果代码开始包含太多的ifs和elses,那么有时候表格驱动的方法就是解决方案。 Code Complete Edition 2的第18章通过大量例子很好地解释了这个概念。您也可以在this article中找到一些示例。

希望能提供帮助。

相关问题