好的接口,如同漂亮的美女,是人都会多看一眼。apache
好比,要咱们设计一个 User。那很简单,典型的 class 嘛,按照 OOP 的套路走就好了,因而:bash
struct User{
1: string id;
2: string name;
3: i64 age;
4: string address;
...
}
复制代码
这样的设计,不能说特别糟糕,也不能说特别完美 。实际上,咱们能够让这个 class 更加清晰直观一点。ui
实际中的 class,需求其实仍是挺多的,好比spa
好的语言设计者,应该会考虑到这些。幸亏,做为典型实用派的Thrift,考虑到了这些。设计
在 Thrift 的官方文档中,说明这些特性。见:thrift.apache.org/docs/idl#fi… 。无非是从语法层面上,提供一些关键词,让读代码的人,维护代码的人,可以有个清晰的认知。code
好比,上面咱们的 User,大概能够变成这样:接口
struct User{
1: required string id; // 须要明确指定ID
2: required string name; // 须要明确指定name
3: optional i64 age; // 年龄, 可填可不填
4: optional string address;
5: optional bool isAdmin=false; // 默认属性, 须要设置时,就去设置
...
}
复制代码
这样,哪些应该有,哪些能够没有,都是一目了然的。开发
因为Thrift 并未为 enum 提供不少功能,因此 enum 写起来就很简单了,注意命名风格便可:文档
enum GenderEnum {
MALE = 1,
FEMALE = 2,
}
复制代码