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

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

内容简介:比如,要我们设计一个 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,
}
复制代码

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

查看所有标签

猜你喜欢:

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

How Great Decisions Get Made

How Great Decisions Get Made

Maruska, Don / 2006-2 / $ 20.28

All too often, solving tough work issues can become a tug of war as clashing departments, priorities, personality styles, and other concerns threaten to destroy any possibility of a successful conclus......一起来看看 《How Great Decisions Get Made》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具