.proto文件枚举变量是否需大写?枚举命名规则咨询
问题解答
1. 枚举成员的语法强制规则
Protobuf 对枚举成员的命名有硬性语法要求:
- 只能包含字母、数字、下划线,绝对不能使用连字符
-、空格这类特殊字符 - 不能以数字开头
你代码里的en-uk、en-gb这类带-的写法是直接违反语法的,这才是工具报错的核心原因,和大小写无关。
2. 大小写是编码规范,非语法强制
Protobuf 本身没有要求枚举成员必须大写,但行业普遍遵循 Google 的编码规范:
- 枚举成员用全大写,单词间用下划线分隔(比如
EN_UK、EN_US) - 枚举类型名用 PascalCase(你写的
Language符合规范)
如果一定要用小写,语法上是允许的(比如en_uk),但不推荐——不符合通用规范会降低代码可读性,团队协作时容易出问题。
修正后的示例代码
推荐的规范写法
enum Language { EN = 0; EN_UK = 1; EN_GB = 2; EN_AU = 3; EN_US = 4; FIL_EN = 5; EN_IN = 6; FR = 7; }
语法合法但不推荐的小写写法
enum Language { en = 0; en_uk = 1; en_gb = 2; en_au = 3; en_us = 4; fil_en = 5; en_in = 6; fr = 7; }
总结
- 必须修改的是把连字符
-替换为下划线_,这是语法强制要求 - 大小写属于编码规范范畴,不是语法强制,但推荐遵循全大写加下划线的通用写法
内容的提问来源于stack exchange,提问作者Ashwin
相关产品推荐
相关产品推荐

