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,
}
複製代碼
相關文章
相關標籤/搜索