本文介绍.proto文件的编码风格。遵循下面的惯例,可以使你的protocol buffer消息定义和它们对应的类连贯且已读。

注意,protocol buffer风格随时间变化一直在进步,所以可能你会在写成的.proto文件看到不同的惯例或风格。在你修改这些文件时请考虑已有风格连贯是关键。然而在创建新的.proto文件时,最好是采用目前最流行的风格。

标准文件格式

  • 每行最多80个字母。
  • 缩进使用2个空格。

文件结构

文件命名应该使用lower_snake_case.proto格式。

所有的文件都应该最受下列方式:

  1. 许可头(如果有的话)
  2. 文件概览
  3. 语法
  4. 导入项(排序后的)
  5. 文件选项
  6. 剩下的

包名称应该小写,并且应该与目录层次结构相对应。例如,如果文件在my/package/中,那么包名应该是my.package

消息和字段名称

使用驼峰(首字母大写)命名消息名称 -- 例如,SongServerRequest。使用下划线连接命名字段名(包括oneof字段和扩展名称) -- 例如,song_name

message SongServerRequest {
string song_name = 1;
}

字段使用命名规范会生成如下格式的访问器:

const string& song_name() { ... }
void set_song_name(const string& x) { ... }
public String getSongName() { ... }
public Builder setSongName(String v) { ... }

如果你的字段名称包含数字,那数字应该紧在最后一个字母后面而不是下划线,例如,要用song_name1而不是song_name_1

重复字段

对重复字段使用复数名称:

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

枚举

使用驼峰(首字母大写)命名枚举类型,使用大写加下划线命名变量名称:

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

每个枚举变量都应该使用分号结束,而不是逗号。使用前缀枚举值,不用闭包消息包围。0值得枚举值应该有UNSPECIFIED后缀。

服务

.proto中定义RPC服务,对于服务名称和RPC方法名称,你应该使用驼峰(首字母大写)命名。

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

要避免的事

  • Required字段(仅针对proto2,应为proto3从语法层面取消了required
  • Groups(仅针对proto2)

更多信息,参见这里

最新文章

  1. 对react的几点质疑
  2. 个人对final发布产品的排名
  3. mysql主从复制的一篇文章(转载)
  4. centos linux安全和调优 第四十一节课
  5. Java中的线程池
  6. JSOI地铁换票 (贪心)
  7. 设置Windows Azure Linux虚拟机中的root账户
  8. 教-----------有时候就是那么纠结,教的时候不提问题,好像很懂,最后又来纠缠你!真是ctmb
  9. 【CMD】findstr命令
  10. 快速傅里叶变换(FFT)
  11. C primer plus 读书笔记第八章
  12. (原)C++中测试代码执行时间
  13. 视频编辑类sdk--lansoeditor--更新啦, 完全免费,欢迎下载
  14. 【shell脚本练习】批量添加用户和设置密码
  15. K3CLOUDJOBPROCESS每分钟重启
  16. 看书记笔记 书名21天学C#
  17. C#新功能--命名参数
  18. vue.js及项目实战[笔记]— 04 axios
  19. 如何在ubuntu上搭建hustoj?
  20. 异步接收MSMQ消息

热门文章

  1. Tomcat8 启动报错
  2. Mysql存储过程案例集合
  3. 5.windows-oracle实战第五课 --事务、函数
  4. FHQ treap板子
  5. 第二代网关GateWay搭建流程
  6. py学习笔记1.13、1.14
  7. 字符串常用方法总结与StringBuffer基础
  8. D. Almost All Divisors
  9. 高性能JAVA开发之内存管理
  10. Linux挂载存储(供应商给的资料)