好的接口,如同漂亮的美女,是人都會多看一眼。
好比,要咱們設計一個 User。那很簡單,典型的 class 嘛,按照 OOP 的套路走就好了,因而:apache
struct User{ 1: string id; 2: string name; 3: i64 age; 4: string address; ... }
這樣的設計,不能說特別糟糕,也不能說特別完美 。實際上,咱們能夠讓這個 class 更加清晰直觀一點。ui
實際中的 class,需求其實仍是挺多的,好比設計
好的語言設計者,應該會考慮到這些。幸虧,做爲典型實用派的Thrift,考慮到了這些。code
在 Thrift 的官方文檔中,說明這些特性。見:https://thrift.apache.org/doc... 。無非是從語法層面上,提供一些關鍵詞,讓讀代碼的人,維護代碼的人,可以有個清晰的認知。接口
好比,上面咱們的 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; // 默認屬性, 須要設置時,就去設置 ... }
這樣,哪些應該有,哪些能夠沒有,都是一目瞭然的。文檔
因爲Thrift 並未爲 enum 提供不少功能,因此 enum 寫起來就很簡單了,注意命名風格便可:get
enum GenderEnum { MALE = 1, FEMALE = 2, }