Как я могу упростить сложную вложенную проверку protobuf в C ++? - PullRequest
4 голосов
/ 07 июля 2010

Я использую буферы протокола Google в приложении обмена сообщениями. Прото часто вложены в несколько уровней, и мы воспользовались советом Google и сделали их необязательными. Прототипы могут описывать много разных типов перекрывающихся сообщений - то есть сообщение типа == X должно содержать член my_X, тип == Y должен содержать my_Y. Кроме того, определенные комбинации полей накладывают другие ограничения на то, какие поля должны присутствовать и какие значения они должны иметь. Изменение структуры прото выходит за рамки того, что я могу сделать.

Прямо сейчас, вся эта проверка в беспорядке утверждений if..else. Если случаи не пересекаются, это может быть осуществимо, но случаи проверки могут накладывать различные ограничения на определенное поле, поэтому оно может быть довольно уродливым. Есть ли способ лучше? Моя цель - сделать код более понятным. Я немного изучил функторы / предикаты, и кажется, что это может упростить проблему, но все равно кажется, что это будет беспорядок.

1 Ответ

0 голосов
/ 08 июля 2010

Если код начинает содержать слишком много if и elses, то иногда решением может быть табличный подход.Глава 18 Code Complete Edition 2 хорошо объясняет концепцию с множеством примеров.Вы также можете найти несколько примеров в этой статье .

Надеемся помочь.

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