天天看點

gRPC架構學習:3、proto樣式規範

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​

所有檔案應按以下方式訂購:

  1. License header (if applicable)
  2. File overview
  3. Syntax
  4. Package
  5. Imports (sorted)
  6. File options
  7. 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)