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

栏目: 服务器 · 发布时间: 7年前

内容简介:比如,要我们设计一个 User。那很简单,典型的 class 嘛,按照 OOP 的套路走就行了,于是:这样的设计,不能说特别糟糕,也不能说特别完美 。实际上,我们可以让这个 class 更加清晰直观一点。实际中的 class,需求其实还是挺多的,比如

比如,要我们设计一个 User。那很简单,典型的 class 嘛,按照 OOP 的套路走就行了,于是:

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

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

实际开发中的思考

实际中的 class,需求其实还是挺多的,比如

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

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

充分利用好 Thrift 提供的特性

在 Thrift 的官方文档中,说明这些特性。见: thrift.apache.org/docs/idl#fi… 。无非是从语法层面上,提供一些关键词,让读代码的人,维护代码的人,能够有个清晰的认知。

比如,上面我们的 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,
}
复制代码

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Flash MX 2004游戏制作完全攻略

Flash MX 2004游戏制作完全攻略

郭亮 / 中国电力出版社 / 2005-5 / 36.0

这是一本讲述Flash游戏编程的优秀教材。精美是数学图解,让您边读边看,兴致盎然;完整的游戏实例,让您边学边玩,趣味无穷;合理的章节规划,让您边学边练,轻松进阶……一起来看看 《Flash MX 2004游戏制作完全攻略》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具