04.语法风格手册
翻译自: Style Guide
本文提供了.proto
文件的样式指南,遵循这些约定,可以使Protocol Buffers
message定义与其生成的类更容易阅读。
请注意,Protocol Buffers 风格一直在发展,所以,您很可能会看到以不同约定或风格编写的 .proto
文件,修改这些文件时请保持现有样式。一致性很重要。 但是在创建新的 .proto
文件时采用最好采用最佳风格。
标准文件格式
- 保请行长度为 80 个字符
- 使用 2 个空格缩进
- 最好对字符串使用双引号
文件结构
文件应命名为采用 lower_snake_case.proto 样式
文件内容按以下方式排序:
License Header (如果需要) File overview Syntax Package Imports (排序) File options Everything else
包
包名应该是小写,并且应该与目录层次结构相对应。 例如,如果一个文件在 my/package/
中,那么包名应该是 my.package
。
消息和字段名
消息名以驼峰式命名(首字符大写)例如:SongServerRequest
,字段名以下划线分割单词的方式命名(包括 oneof
和 扩展名),例如:song_name
。
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_name1
而不是 song_name_1
Repeated 字段
使用复数名词命名repeated字段。
repeated string keys = 1;
...
repeated MyMessage accounts = 17;
枚举
枚举名以驼峰式命名(首字符大写),使用以下划线分割大写字符拼写单词的方式命名枚举值名称。示例如下 :
enum Foo {
FIRST_VALUE = 0;
SECOND_VALUE = 1;
}
每个枚举值以分号(;)结尾,不是逗号(,)。优先为枚举值添加前缀,不要把枚举放在 message 定义中。零值应该使用 UNSPECIFIED
作为后缀。
服务
如果.proto
定义了RPC服务,服务名和RPC方法都应以驼峰式命名(首字符大写)。
service FooService {
rpc GetSomething(FooRequest) returns (FooResponse);
}