博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Thrift RPC 系列教程(5)—— 接口设计篇:struct & enum设计
阅读量:6133 次
发布时间:2019-06-21

本文共 873 字,大约阅读时间需要 2 分钟。

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

一个示例

比如,要我们设计一个 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 的官方文档中,说明这些特性。见: 。无非是从语法层面上,提供一些关键词,让读代码的人,维护代码的人,能够有个清晰的认知。

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

转载地址:http://oleua.baihongyu.com/

你可能感兴趣的文章
数学之美系列二十 -- 自然语言处理的教父 马库斯
查看>>
Android实现自定义位置无标题Dialog
查看>>
面试总结
查看>>
Chrome浏览器播放HTML5音频没声音的解决方案
查看>>
easyui datagrid 行编辑功能
查看>>
HDU 2818 (矢量并查集)
查看>>
实验二 Java面向对象程序设计
查看>>
------__________________________9余数定理-__________ 1163______________
查看>>
webapp返回上一页 处理
查看>>
新安装的WAMP中phpmyadmin的密码问题
查看>>
20172303 2017-2018-2 《程序设计与数据结构》第5周学习总结
查看>>
eclipse中将一个项目作为library导入另一个项目中
查看>>
Go语言学习(五)----- 数组
查看>>
Android源码学习之观察者模式应用
查看>>
416. Partition Equal Subset Sum
查看>>
Django之FBV与CBV
查看>>
Vue之项目搭建
查看>>
app内部H5测试点总结
查看>>
[TC13761]Mutalisk
查看>>
Data Wrangling文摘:Non-tidy-data
查看>>