[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가지 유형으로 처리하는 편이 더 낫다고 생각함.
- 해당 필드가 없는 경우 (has_xxx() 를 이용하여 xxx 필드를 설정하지 않은 경우 확인)
# default 값을 설정해도 has_xxx() 는 실제 protobuf 사용 시 set 하지 않으면 false 를 반환하지만,
# 보는 사람에 따라서 헷갈릴 수 있다.(?) - 해당 필드가 있는 경우 xxx() 를 이용하여 값 확인.
즉, 아래와 같은 패턴으로 작성하는 편이 더 낫다고 생각 함.
if (has_xxx()) {
// default 값 세팅
}
else {
// xxx() 함수를 이용하여 값 가져오기
}
'Open Source > ProtoBuf' 카테고리의 다른 글
| Protocol buffer 설치 (0) | 2022.05.29 |
|---|