Thrift RPC 系列教程(2)——全域性變數&全域性常量
通常來說,『全域性變數』被視為一種不好的程式設計風格,因為它實在是不可控,怕它的狀態不知道在什麼時候就被改變了,根源就是『人們害怕未知』。但是如果是全域性常量,則問題不大,反正變來變去,還是同一個東西。
Thrift支援全域性常量
Thrift中的常量,其實就是模組級別的常量,語法上,自然是簡單得不得了:
// 普通基礎型別 const i32 INT32CONSTANT = 9853 // 複雜容器型別 const map<string,string> MAPCONSTANT = {'hello':'world', 'goodnight':'moon'}; const set<string> NAMES = {"name1", "name2"}; const list<string> NAMES_LIST = ["name1", "name2"]; 複製程式碼
全域性常量有啥用?
如同你使用其他程式語言一樣,全域性常量在它們裡面有啥用,那麼在Thrift中就有啥用。比如我有一個需求,需要為系統的每個埠起一個名字,以統一規範,統一給每個微服務系統使用。那麼我們就可以:
constmap<string, i64>PORTNAME_PORT = { "MYSQL_PORT": 8806, "REDIS_PORT": 7379, }; 複製程式碼
不過,總體而言,『全域性XX』帶來了方便,也帶來了問題,沒有什麼事情是非得使用『全域性』去解決的,所以總體上不是 非常推薦的風格。