CcbeanBlog CcbeanBlog
首页
  • 前端文章

    • JavaScript
    • HTML+CSS
    • Vue
    • React
  • 系列笔记

    • React使用学习
    • Vue2源码探究
  • Node文章

    • 基础
    • 问题
    • 框架
  • 系列笔记

    • 数据结构与算法
  • 构建工具文章

    • webpack
  • 系列笔记

    • Webpack5使用学习
  • MySQL
  • Linux
  • 网络
  • 小技巧
  • 杂记
  • 系列笔记

    • Protobuf Buffers
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Ccbean

靡不有初,鲜克有终
首页
  • 前端文章

    • JavaScript
    • HTML+CSS
    • Vue
    • React
  • 系列笔记

    • React使用学习
    • Vue2源码探究
  • Node文章

    • 基础
    • 问题
    • 框架
  • 系列笔记

    • 数据结构与算法
  • 构建工具文章

    • webpack
  • 系列笔记

    • Webpack5使用学习
  • MySQL
  • Linux
  • 网络
  • 小技巧
  • 杂记
  • 系列笔记

    • Protobuf Buffers
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • proto3语法指南
  • Proto编写风格指南
    • 标准格式
    • 文件结构
    • package 包名
    • message和字段名
    • repaeted 字段
    • Enums
    • Services
    • Things to avoid
  • ProtoBuf官方文档
ccbean
2022-04-26
目录

Proto编写风格指南

# Proto编写风格指南

此为是.proto文件的编写风格指南。按此约定,将使得Protocol Buffer的message定义和对应class保持一致性并易于阅读。

请注意,Protocol Buffer风格随着时间的推移而发展,因此您可能会看到以不同的约定或样式编写的.proto文件。修改这些文件时,请尊重现有样式。**一致性是关键。**但是,当创建新的.proto文件时,最好采用当前最佳风格。

# 标准格式

  • 行长度保持在80个字符
  • 使用2个空格缩进
  • 字符串最好使用双引号

# 文件结构

文件以小写下划线的格式命名:lower_snake_case.proto

All files should be ordered in the following manner:

  1. License header (if applicable)
  2. File overview
  3. Syntax
  4. Package
  5. Imports (sorted)
  6. File options
  7. Everything else

# package 包名

包名应小写。包名称应基于项目名称具有唯一的名称,并且可能基于包含protocol buffer类型定义的文件的路径。

# message和字段名

message名使用大驼峰,如SongServerRequest。

字段名使用下划线分割名underscore_separated_names,包括oneof字段和扩展名,如song_name

message SongServerRequest {
  optional 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

# repaeted 字段

对repeated字段使用复数名称

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

# Enums

对枚举类型名使用大驼峰,对值名使用大写加下划线CAPITALS_WITH_UNDERSCORES

enum FooBar {
  FOO_BAR_UNSPECIFIED = 0;
  FOO_BAR_FIRST_VALUE = 1;
  FOO_BAR_SECOND_VALUE = 2;
}

每个枚举值应以分号结尾,而不是逗号。宁愿在枚举值前面加上前缀,而不是将它们包围在一个封闭的消息中。零值的枚举应该有 UNSPECIFIED后缀。

# Services

如果使用.proto定义一个 RPC 服务,应该对服务名和任何 RPC 方法名使用大驼峰

service FooService {
  rpc GetSomething(GetSomethingRequest) returns (GetSomethingResponse);
  rpc ListSomething(ListSomethingRequest) returns (ListSomethingResponse);
}

# Things to avoid

  • Required fields (only for proto2)
  • Groups (only for proto2)
编辑 (opens new window)
上次更新: 2022/04/26, 22:52:08
proto3语法指南

← proto3语法指南

最近更新
01
阅读精通正则表达式总结
09-29
02
项目搭建规范的配置
07-15
03
Vite的使用
07-03
更多文章>
Theme by Vdoing | Copyright © 2018-2023 Ccbeango
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式