본문 바로가기

Open Source/ProtoBuf

default 값에 대하여

[1. 개요]

.proto 작성 시 default 값을 사용하는 문제에 대하여 개인적인 견해를 정리한다.


[2. syntax 버전]

.proto 작성 시 기본적으로 syntax 버전을 명시하는데, 각각 아래와 같다.

버전 특징
syntax = "2" default 사용 가능
syntax = "3" default 사용 불가능 (v3.12 ~ )

 

기본적으로 .proto 파일에 명시 된 message 는 cpp 기준 기본적으로 protoc 를 거쳐 class 화 된다.

이 때, 각 클래스는 멤버 변수들을 갖기 때문에 이미 default 값을 갖게 된다. (0, null, false, ... )

syntax = "2" 에서 default 는 0, false 외 값을 명시할 수 있는 것이다.

(이러한 기능이 큰 의미가 있는지는 잘 모르겠다.)

 

따라서, syntax 에 관계 없이 .proto 파일 작성 시 default 항목은 사용하지 않은 편이 좋다.

아래와 같이 3가지 유형으로 처리하는 편이 더 낫다고 생각함.

  1. 해당 필드가 없는 경우 (has_xxx() 를 이용하여 xxx 필드를 설정하지 않은 경우 확인)
    # default 값을 설정해도 has_xxx() 는 실제 protobuf 사용 시 set 하지 않으면 false 를 반환하지만,
    # 보는 사람에 따라서 헷갈릴 수 있다.(?) 
  2. 해당 필드가 있는 경우 xxx() 를 이용하여 값 확인.

즉, 아래와 같은 패턴으로 작성하는 편이 더 낫다고 생각 함.

if (has_xxx()) {
    // default 값 세팅
}
else {
  // xxx() 함수를 이용하여 값 가져오기
}

 

 

'Open Source > ProtoBuf' 카테고리의 다른 글

Protocol buffer 설치  (0) 2022.05.29