首页 > 代码库 > Protobuf最佳实践(2)-- 命名规则

Protobuf最佳实践(2)-- 命名规则

上篇文章介绍了一种比较合理的目录结构,本文来讨论一下各种命名规则。

文件

Protobuf文件使用SnakeCase规则命名(小写字母+下划线),以.proto为后缀。比如:player_info.proto。protoc会根据目标语言的命名规则来生成相应的目标文件。如果目标语言是Java的话,会生成PlayerInfo.java。如果目标语言是C++的话,会生成player_info.pb.h和player_info.pb.cc。

消息

消息的命名规则和Java的类名规则一致:首字母大写的CamelCase。比如:

message PlayerInfo {
    ...
}

字段

字段名使用SnakeCase(小写字母+下划线),比如:player_name。和文件名一样,protoc会根据目标语言的风格来调整字段名。对于Java代码,protoc会把SnakeCase转成首字母小写的CamelCase。对于C++代码则会保留SnakeCase风格。

repeated字段

repeated字段,大致等同于Java里的数组或集合。在Java里,数组或集合类型的字段一般命名成复数形式。比如:List<Item> items。但是在定义Protobuf消息的时候,一定不要这样。比如这个字段:repeated ItemDto items = 1。在编译成Java代码时,protoc会生成下面这些方法:

public List<ItemDto> getItemsList()public int getItemsCount()public ItemDto getItems(int index)
看到了吧,这三个方法里,都使用了item的复数形式,这是非常奇怪的。

枚举

枚举名和消息名保持一致,枚举值使用大写字母+下划线,例如:
例如:

enum Foo {
  FIRST_VALUE = http://www.mamicode.com/1;>

参考资料

Protobuf Style Guide


Protobuf最佳实践(2)-- 命名规则