Thrift RPC 系列教程(5)—— 接口设计篇:struct & enum设计

好的接口,如同漂亮的美女,是人都会多看一眼。apache

一个示例

好比,要咱们设计一个 User。那很简单,典型的 class 嘛,按照 OOP 的套路走就好了,因而:bash

struct User{
    1: string id;
    2: string name;
    3: i64 age;
    4: string address;
    ...
}
复制代码

这样的设计,不能说特别糟糕,也不能说特别完美 。实际上,咱们能够让这个 class 更加清晰直观一点。ui

实际开发中的思考

实际中的 class,需求其实仍是挺多的,好比spa

  1. 属性也许会不少(好比十几项属性?)
  2. 须要某个属性,有默认值
  3. 须要某个属性,可设置可不设置
  4. 须要某个属性,强制设置,并提供很直观的提示
  5. 等等等等

好的语言设计者,应该会考虑到这些。幸亏,做为典型实用派的Thrift,考虑到了这些。设计

充分利用好 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;      // 默认属性, 须要设置时,就去设置
    ...
}
复制代码

这样,哪些应该有,哪些能够没有,都是一目了然的。开发

enum 的设计

因为Thrift 并未为 enum 提供不少功能,因此 enum 写起来就很简单了,注意命名风格便可:文档

enum GenderEnum {
    MALE = 1,
    FEMALE = 2,
}
复制代码
相关文章
相关标签/搜索