全局變量,就像不可控的孩子,你放心你的孩子總是消失你的視野范圍內(nèi)嗎?
為啥有全局變量
通常來說,『全局變量』被視為一種不好的編程風(fēng)格,因?yàn)樗鼘?shí)在是不可控,怕它的狀態(tài)不知道在什么時(shí)候就被改變了,根源就是『人們害怕未知』。但是如果是全局常量,則問題不大,反正變來變?nèi)?,還是同一個(gè)東西。
Thrift支持全局常量
Thrift中的常量,其實(shí)就是模塊級(jí)別的常量,語法上,自然是簡(jiǎn)單得不得了:
// 普通基礎(chǔ)類型
const i32 INT32CONSTANT = 9853
// 復(fù)雜容器類型
const map<string,string> MAPCONSTANT = {'hello':'world', 'goodnight':'moon'};
const set<string> NAMES = {"name1", "name2"};
const list<string> NAMES_LIST = ["name1", "name2"];
全局常量有啥用?
如同你使用其他編程語言一樣,全局常量在它們里面有啥用,那么在Thrift中就有啥用。比如我有一個(gè)需求,需要為系統(tǒng)的每個(gè)端口起一個(gè)名字,以統(tǒng)一規(guī)范,統(tǒng)一給每個(gè)微服務(wù)系統(tǒng)使用。那么我們就可以:
const map<string, i64> PORTNAME_PORT = {
"MYSQL_PORT": 8806,
"REDIS_PORT": 7379,
};
不過,總體而言,『全局XX』帶來了方便,也帶來了問題,沒有什么事情是非得使用『全局』去解決的,所以總體上不是 非常推薦的風(fēng)格。