在Thrift中,是否有推荐的标识符命名规范?
例如,我们有一个由通常是C#程序员的人编写的Thrift IDL。从这个生成的源代码可以在C#和Python中工作。然而,尽管可以从同一份Thrift文件生成Java代码,但是当IDL的作者给标识符命名与它们的类型完全相同的名称时,会出现Java编译器错误。例如:
enum DataType {
Text,
Integer
}
struct Metadata {
1: string ColumnName,
2: DataType DataType
}
请注意,“DataType”标识符与其类型名称相同,包括大小写。使用--gen java
Thrift编译器选项生成的Java代码存在编译错误,例如:
Cannot make a static reference to the non-static field DataType
我虽然不是C#程序员,但我知道在C#中以大写字母开头的标识符名称是非常普遍的做法。目前为止,我们将不得不更改IDL以使用小写字母作为标识符名称(例如
DataType dataType
),并重新生成所有客户端;但如果有一些关于Thrift标识符命名约定的建议,那么我们就不会在其他语言中遇到类似的问题了。顺便说一句,我尝试过
--gen java:nocamel
,但这没有解决问题。