スタイルガイド
このドキュメントは .proto
ファイルのスタイルガイドです。
下記の規則に従えば、Protocol Buffer Message の定義と対応するクラスの一貫性を保つことができて、容易に読めるようになります。
Protocol Buffer は時間とともに進化してきたので、異なる規則やスタイルで書かれた .proto ファイルを見ることがあります。
それらのファイルを修正するときは、既存のスタイルを尊重してください。
一貫性は鍵となります
しかしながら新しく .proto ファイルを作るときは、現在のベストスタイルを採用することが最良です。
基本的なファイルフォーマット
- 一行は80文字まで
- インデントはスペース2個
- 文字列はダブルクォートを選ぶように
ファイル構造
ファイル名は lower_snake_case.proto にするべきです。
すべてのファイルは以下の順番で記述してください
1. ライセンスヘッダー (もし適用できるなら)
2. ファイルの概要
3. syntax
4. package
5. import (ソートする)
6. ファイルオプション
7. それ以外
package
パッケージ名は小文字で、ディレクトリ構造と同様に命名してください。
例: ファイルが my/package/
というディレクトリ内にある場合は、パッケージ名は my.package
にします。
message とフィールド名
message 名は CamelCase (最初の文字も大文字) にします。
例: SongServerRequest
フィールド名 (oneof や extension のフィールド名も含む) は unserscore_separated_names
のようにアンダースコアで文字をつなぎます
例: song_name
message SongServerRequest {
required string song_name = 1;
}
このフィールド名の命名規則は下記の Accessor にしてもらえます。
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 フィールド
repeated フィールドは複数形の名前を使います。
repeated string keys - 1;
...
repeated MyMessage accounts = 17;
enum
enum タイプは CamelCase (最初の文字も大文字) で、値の名前は CAPITALS_WITH_UPDERSCORES (大文字のスネークケース) を使います。
enum FooBar {
FOO_BAR_UNSPECIFIED = 0;
FOO_BAR_FIRST_VALUE = 1;
FOO_BAR_SECOND_VALUE = 2;
}
各 enum の値の最後はコンマではなくセミコロンを使うべきです。
一般的には enum の値は message の括弧の中の代わりとなります。
0 の enum の値は UNSPECIFIED
の接尾辞を持つべきです。
service
.proto
に RPC service を定義する場合、service名と RPC メソッド名の両方とも CamelCase (最初の文字も大文字) を使うべきです。
service FooService {
rpc GetSomething(FooRequest) returns (FooResponse);
}
避けるべきこと
- required フィールドの利用 (proto2 のみ)
- group 修飾子の利用 (proto2 のみ)
References
https://developers.google.com/protocol-buffers/docs/style
Date
2020/12/04