Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

열람용기록

Style Guide 본문

Read the F. Manual/Protocol Buffer

Style Guide

OptiFree 2021. 5. 19. 23:27
 

Style Guide  |  Protocol Buffers  |  Google Developers

This document provides a style guide for .proto files. By following these conventions, you'll make your protocol buffer message definitions and their corresponding classes consistent and easy to read. Note that protocol buffer style has evolved over time,

developers.google.com

이 문서는 .proto 파일을 위한 스타일 가이드를 제공합니다. 이 규칙을 지킨다면 일관성과 가독성 있는 protocol buffer 메시지와 이에 상응하는 클래스를 만들 수 있을 것입니다.

Protocol buffer의 스타일은 지속적으로 발전되어 왔습니다. 이 때문에 다른 규칙의 .proto 파일을 볼 수 있는 확률이 큽니다. 이런 파일을 수정 할 때에는 기존의 스타일을 따라 주십시오. 그러나 새로운 .proto 파일을 만들 때에는 현재의 최적의 스타일을 채택하는것이 가장 좋습니다.

기본 파일 포맷

  • 한 줄에 80자를 넘기지 마세요.
  • 들여쓰기는 2개의 공백으로 합니다.
  • 문자열을 표현 할 때 쌍따옴표를 사용하세요.

파일 구조

파일 이름은 lower_snake_case 을 이용해야 합니다.

모든 파일은 아래의 순서를 지켜야 합니다:

  1. 라이센스 헤더 (적용 가능하다면)
  2. 파일 개요
  3. 문법 (Syntax) - Proto2, Proto3를 구분하는 항목을 뜻하는것으로 보입니다.
  4. 패키지
  5. Import (정렬된)
  6. 파일 옵션
  7. 그 밖에 것들

패키지

패키지 이름은 소문자를 사용해야 하며 폴더 계층과 맞추어야 합니다. 가령 파일이 my/package/ 에 있다면 패키지 이름은 my.package 여야 합니다.

메시지와 필드 이름

메시지 이름에는 대문자로 시작하는 CamelCase 을 사용합니다. (예시: SongServerRequest) 필드의 이름은 밑줄로 구분하세요. (필드와 확장 이름을 포함합니다, 예시: song_name)

message SongServerRequest {
  required string song_name = 1;
}

message SongServerRequest { required string song_name = 1; }

필드에 위의 작명 규칙을 따르면 아래와 같은 접근자를 얻을 수 있습니다.

// C++:
  const string& song_name() { ... }
  void set_song_name(const string& x) { ... }
// Java:
  public String getSongName() { ... }
  public Builder setSongName(String v) { ... }

 

만약 필드 이름에 숫자를 포함한다면 숫자는 밑줄 뒤가 아닌 문자 뒤에 위치하여야 합니다. 가령 song_name_1 대신 song_name1 을 사용하세요.

반복되는 필드

반복되는 필드에는 복수형의 이름을 사용하세요.

repeated string keys = 1;
  ...
repeated MyMessage accounts = 17;

 

열거자 (Enum)

열거자 타입 이름으로 대문자로 시작하는 CamelCase를 사용하고 값 이름으로는 밑줄로 구분하는 대문자 (CAPITALS_WITH_UNDERSCORES) 를 사용하세요:

enum FooBar {
  FOO_BAR_UNSPECIFIED = 0;
  FOO_BAR_FIRST_VALUE = 1;
  FOO_BAR_SECOND_VALUE = 2;
}

 

각 열거자 값은 쉼표가 아닌 세미콜론론으로 끝나야 합니다. 열거자를 메시지로 감싸기 보다는 접두사(prefix)가 있는 열거자 이름을 사용하는 것이 좋습니다. 열거자의 0 값은 UNSPECIFIED 접미사 (suffix)를 이용해야 합니다.

서비스

만약 .proto 파일이 RPC 서비스를 정의한다면 서비스의 이름과 RPC의 메소드 이름으로 대문자로 시작하는 CamelCase를 이용해야 합니다.

service FooService {
  rpc GetSomething(FooRequest) returns (FooResponse);
}

 

피해야 할 것

  • Required 필드 (proto2 에서만 가능합니다.)
  • Groups (proto2 에서만 가능합니다.)

'Read the F. Manual > Protocol Buffer' 카테고리의 다른 글

Techniques  (0) 2021.05.19
Encoding  (0) 2021.05.19