新聞中心
我們知道在程序啟動時會需要執(zhí)行一些"初始化"的邏輯操作,例如:?Server?配置、各種數(shù)據(jù)庫(?MySQL?、?Redis?、?Kafka?等)配置、業(yè)務(wù)對象配置等等。絕大多數(shù)場景下,我們有兩種初始化方式:隱式初始化和顯式初始化。

創(chuàng)新互聯(lián)主營南溪網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,App定制開發(fā),南溪h5小程序定制開發(fā)搭建,南溪網(wǎng)站營銷推廣歡迎南溪等地區(qū)企業(yè)咨詢
一、隱式初始化
隱式初始化一般通過包初始化方法?init?執(zhí)行初始化。需要注意的是,如果初始化邏輯存在錯誤的可能,由于?init?方法的錯誤無法被上層捕獲,初始化出錯時往往直接終止程序啟動。例如:
隱式初始化出錯時往往直接終止程序啟動
隱式初始化的好處是不需要手動調(diào)用初始化方法,對于開發(fā)者隱藏了初始化細(xì)節(jié),因此開發(fā)者沒有心智負(fù)擔(dān)。但是缺點(diǎn)也同樣如此,開發(fā)者不知道初始化細(xì)節(jié),一旦出現(xiàn)錯誤時,很難快速定位錯誤原因。因此使用隱式初始化時,往往要求在初始化出錯時將詳細(xì)的錯誤以及堆棧信息打印出來便于錯誤定位。
?GOFrame?框架的很多模塊都采用了隱式初始化,隱藏模塊的初始化細(xì)節(jié),減少開發(fā)者的心智負(fù)擔(dān)。例如:
?GoFrame?中的模塊普遍存在隱式初始化設(shè)計
關(guān)于包?init?方法的初始化流程:
二、顯式初始化
顯式初始化要求開發(fā)在程序啟動時,如在?main?或者?boot?模塊中,調(diào)用特定的方法來執(zhí)行初始化操作。一般來說,基礎(chǔ)組件的初始化往往采用隱式初始化多一些,因?yàn)閷τ谑褂谜邅碇v并不關(guān)心底層基礎(chǔ)模塊的初始化邏輯,而業(yè)務(wù)模塊的初始化大多數(shù)會采用顯式初始化。例如:
在?boot?包中按照順序執(zhí)行顯式初始化
在?main?包調(diào)用?boot.Boot()?方法執(zhí)行初始化
三、如何選擇
在業(yè)務(wù)場景下,非特殊必要,我們建議大家采用顯式初始化的方式,以保證更好的可維護(hù)性。
網(wǎng)頁題目:創(chuàng)新互聯(lián)GoFrame教程:GoFrame框架設(shè)計-隱式與顯式初始化
文章出自:http://fisionsoft.com.cn/article/dpeoocc.html


咨詢
建站咨詢
