上篇文章介绍了一种比较合理的目录结构,本文来讨论一下各种命名规则。
文件
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 = 1; SECOND_VALUE = 2; }
参考资料
时间: 2024-11-27 21:40:12