메시징 응용 프로그램에서 Google 프로토콜 버퍼를 사용하고 있습니다. proto는 종종 여러 단계로 중첩되어 있으며 Google은 Google의 조언을 받아 선택적으로 만들었습니다. protos는 여러 가지 유형의 중복 메시지를 설명 할 수 있습니다. 즉, Type == X의 메시지에는 my_X 멤버가 있어야하고 Type == Y에는 my_Y가 있어야합니다. 또한 필드의 특정 조합은 필드가 있어야하고 어떤 값을 가져야하는지에 대한 다른 제한을 부과합니다. proto의 구조를 변경하는 것은 내가 할 수있는 것의 범위를 벗어납니다.C++에서 복잡한 중첩 된 protobuf 유효성 검사를 어떻게 능률화 할 수 있습니까?
지금이 모든 유효성 검사는 if..else 문을 엉망으로 만듭니다. 케이스가 겹치지 않으면 작동 할 수도 있지만 유효성 검사 케이스는 특정 필드에 대해 다른 제한을 부과 할 수 있으므로 꽤 추해 질 수 있습니다. 더 좋은 방법이 있습니까? 내 목표는 코드를보다 관리하기 쉽게 만드는 것입니다. 나는 펑터/술어를 조금 들여다 보았는데 문제가 단순해질 수있는 것처럼 보이지만 여전히 엉망이되는 것처럼 보인다.
테스트를 각 펑터로 옮길 수 있습니까? 일부 코드를 보지 않아도 어려워집니다. 문제가되는 if-the-else 블록을 게시 할 수 있습니까? –