J'utilise des tampons de protocole Google dans une application de messagerie. Les protos sont souvent imbriqués à plusieurs niveaux, et nous avons pris les conseils de Google et les avons tous rendus facultatifs. Les protos peuvent décrire de nombreux types différents de messages qui se chevauchent - c'est-à-dire qu'un message de type == X devrait contenir le membre my_X, Type == Y devrait contenir my_Y. De plus, certaines combinaisons de champs imposent d'autres restrictions quant aux champs qui devraient être présents et aux valeurs qu'ils devraient avoir. Changer la structure du proto dépasse la portée de ce que je peux faire.Comment simplifier la validation de protobuf imbriquée complexe en C++?
À l'heure actuelle, toute cette validation est en désordre des instructions if..else. Si les cas ne se chevauchent pas, cela peut être réalisable, mais les cas de validation peuvent imposer des restrictions différentes sur un certain champ, de sorte qu'il peut devenir très moche. Y a-t-il un meilleur moyen? Mon but est de rendre le code plus facile à maintenir. J'ai examiné un peu les foncteurs/prédicats, et il semble que cela puisse simplifier le problème, mais il semble toujours que ce sera un gâchis.
Pourriez-vous déplacer les tests dans les foncteurs respectifs? Difficile d'être plus spécifique sans voir de code - pourriez-vous poster un fragment du bloc off-the-else? –