不要使用全局變量。
全局變量的可怕之處在于,無(wú)論讀或?qū)懫饫颍疾豢尚刨?lài)菠剩。因?yàn)槟悴恢朗欠裼心膫€(gè)程序做了不該做的修改,或者忘記做了應(yīng)該做的修改。那怕當(dāng)前的測(cè)試結(jié)果正確匾浪,也不能保證這是特性刺桃,還是bug草慧。
不要使用超大可訪(fǎng)問(wèn)性桶蛔,且狀態(tài)可變的對(duì)象,比如有狀態(tài)的單例對(duì)象漫谷。
程序不是一個(gè)不可分割的整體羽圃,它由一些自治的模塊共同組成一個(gè)聯(lián)邦,當(dāng)有一個(gè)模塊去關(guān)系另一個(gè)模塊的狀態(tài)時(shí)抖剿,它們的行為就難以預(yù)測(cè)朽寞。
單例對(duì)象,應(yīng)只相當(dāng)于一個(gè)入口斩郎,它的功能就是提供一個(gè)全局可訪(fǎng)問(wèn)的入口脑融,而不是提供功能或者提供可查詢(xún)的狀態(tài)。
可以例外的情況缩宜,包括內(nèi)存管理肘迎,日志,配置锻煌,錯(cuò)誤處理等妓布,每個(gè)模塊都應(yīng)該有功能,它們可以共享相同的對(duì)象宋梧。因?yàn)檫@些功能明確匣沼,不會(huì)也不應(yīng)該有出人意料的影響。