gRPC架構學習:3、proto樣式規範
文章目錄
- gRPC架構學習:3、proto樣式規範
- 1. 标準檔案格式
- 2. 檔案結構
- 3. Packages
- 4. 消息和字段名稱
- 5. 重複的字段
- 6. 枚舉
- 7. 服務
- 8. 避免的事情
本文檔提供了.proto檔案的樣式指南。通過遵循這些約定,您将使協定緩沖區消息定義及其相應的類保持一緻并易于閱讀。
請注意,協定緩沖區樣式已經随着時間而發展,是以您可能會看到.proto以不同約定或樣式編寫的檔案。修改這些檔案時,請尊重制有樣式。一緻性是關鍵。但是,在建立新.proto檔案時,最好采用目前的最佳樣式。
1. 标準檔案格式
- 保持行長為80個字元。
- 縮進2個空格。
- 最好對字元串使用雙引号。
2. 檔案結構
檔案應命名
lower_snake_case.proto
所有檔案應按以下方式訂購:
- License header (if applicable)
- File overview
- Syntax
- Package
- Imports (sorted)
- File options
- Everything else
3. Packages
程式包名稱應為小寫,并且應與目錄層次結構相對應。例如,如果檔案在其中
my/package/
,則軟體包名稱應為
my.package
。
4. 消息和字段名稱
使用CamelCase(使用大寫字母)作為消息名稱-例如,
SongServerRequest
。使用underscore_separated_names作為字段名(包括字段名和擴充名之一),例如
song_name
。
message SongServerRequest {
optional 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_name1
代替
song_name_1
5. 重複的字段
對重複的字段使用複數名稱。
repeated string keys = 1;
...
repeated MyMessage accounts = 17;
6. 枚舉
使用CamelCase(以大寫字母開頭)作為枚舉類型名稱,并使用CAPITALS_WITH_UNDERSCORES作為值名稱:
enum FooBar {
FOO_BAR_UNSPECIFIED = 0;
FOO_BAR_FIRST_VALUE = 1;
FOO_BAR_SECOND_VALUE = 2;
}
7. 服務
service FooService {
rpc GetSomething(FooRequest) returns (FooResponse);
}
8. 避免的事情
- 必填字段(僅适用于proto2)
- 組(僅适用于proto2)