ProtoBuf Style Guide(中文版)

这份文档提供了协议缓冲区消息定义的样式指南,旨在确保文件的一致性和易读性。建议包括保持80字符的行长,使用双空格缩进,按照特定顺序组织文件内容,使用小写并反映目录结构的包名,以及使用CamelCase命名消息和字段。避免使用required字段和groups(仅针对proto2),并遵循枚举和重复字段的命名约定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


此文档为.proto文件提供了样式指南。通过遵循这些约定,您将使您的协议缓冲区消息定义及其相应的类一致且易于阅读。

请注意,协议缓冲区样式是随着时间的推移而发展的,因此您可能会看到用不同约定或样式编写的.proto文件。修改这些文件时,Please respect the existing styleConsistency is key.。但是,在创建新的.proto文件时,最好采用当前最好的样式。

Standard file formatting

  • 保持行长为80个字符
  • 使用两个空格的缩进

File structure

应将文件命名为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

Packages

包名应该是小写的,并且应该对应于目录层次结构。例如,如果一个文件位于my/Package/中,那么包名应该是my.Package

Message and field names

使用CamelCase(带有初始大写)作为消息名-例如,Song ServerRequest。使用underscore_separated_names(包括字段名和扩展名)-例如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 fields

Use pluralized names for repeated fields.

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

Enums

使用CamelCase(带有初始大写)表示枚举类型名称,并使用CAPITALS_WITH_UNDERSCORES表示值名称:

enum Foo {
  FOO_UNSPECIFIED = 0;
  FOO_FIRST_VALUE = 1;
  FOO_SECOND_VALUE = 2;
}

每个枚举值应该以分号结尾,而不是逗号。更喜欢以枚举值作为前缀,而不是在封闭的消息中包围它们。零值枚举应该具有UNSPECIFIED后缀。

Services

如果您的.proto定义了一个RPC服务,那么您应该同时使用CamelCase(带有初始大写)作为服务名称和任何RPC方法名称:

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

Things to avoid(要避免的事)

  • Required fields (only for proto2)
  • Groups (only for proto2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值