W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
我們知道在程序啟動(dòng)時(shí)會(huì)需要執(zhí)行一些"初始化"的邏輯操作,例如:?Server
?配置、各種數(shù)據(jù)庫(?MySQL
?、?Redis
?、?Kafka
?等)配置、業(yè)務(wù)對(duì)象配置等等。絕大多數(shù)場景下,我們有兩種初始化方式:隱式初始化和顯式初始化。
隱式初始化一般通過包初始化方法?init
?執(zhí)行初始化。需要注意的是,如果初始化邏輯存在錯(cuò)誤的可能,由于?init
?方法的錯(cuò)誤無法被上層捕獲,初始化出錯(cuò)時(shí)往往直接終止程序啟動(dòng)。例如:
隱式初始化出錯(cuò)時(shí)往往直接終止程序啟動(dòng)
隱式初始化的好處是不需要手動(dòng)調(diào)用初始化方法,對(duì)于開發(fā)者隱藏了初始化細(xì)節(jié),因此開發(fā)者沒有心智負(fù)擔(dān)。但是缺點(diǎn)也同樣如此,開發(fā)者不知道初始化細(xì)節(jié),一旦出現(xiàn)錯(cuò)誤時(shí),很難快速定位錯(cuò)誤原因。因此使用隱式初始化時(shí),往往要求在初始化出錯(cuò)時(shí)將詳細(xì)的錯(cuò)誤以及堆棧信息打印出來便于錯(cuò)誤定位。
?GoFrame
?框架的很多模塊都采用了隱式初始化,隱藏模塊的初始化細(xì)節(jié),減少開發(fā)者的心智負(fù)擔(dān)。例如:
?GoFrame
?中的模塊普遍存在隱式初始化設(shè)計(jì)
關(guān)于包?init
?方法的初始化流程:
顯式初始化要求開發(fā)在程序啟動(dòng)時(shí),如在?main
?或者?boot
?模塊中,調(diào)用特定的方法來執(zhí)行初始化操作。一般來說,基礎(chǔ)組件的初始化往往采用隱式初始化多一些,因?yàn)閷?duì)于使用者來講并不關(guān)心底層基礎(chǔ)模塊的初始化邏輯,而業(yè)務(wù)模塊的初始化大多數(shù)會(huì)采用顯式初始化。例如:
在?boot
?包中按照順序執(zhí)行顯式初始化
在?main
?包調(diào)用?boot.Boot()
?方法執(zhí)行初始化
在業(yè)務(wù)場景下,非特殊必要,我們建議大家采用顯式初始化的方式,以保證更好的可維護(hù)性。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: