什么是海勒姆定律

本篇內(nèi)容介紹了“什么是海勒姆定律”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于做網(wǎng)站、網(wǎng)站制作、紅安網(wǎng)絡(luò)推廣、小程序設(shè)計(jì)、紅安網(wǎng)絡(luò)營銷、紅安企業(yè)策劃、紅安品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供紅安建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:bm7419.com

什么是海勒姆定律

01 海勒姆定律

在程序設(shè)計(jì)中,接口和實(shí)現(xiàn)是很重要的兩部分。通常在一個(gè)系統(tǒng)里面,接口就是一個(gè)與系統(tǒng)交互的抽象,比如汽車的方向盤和油門,剎車這些(我們通過這些來控制汽車,與汽車交互),而實(shí)現(xiàn)則是這個(gè)系統(tǒng)工作的一種方式,比如汽車的輪子和引擎(汽車實(shí)際是通過這些來工作的)。區(qū)分接口和實(shí)現(xiàn)的好處是非常明顯的,當(dāng)一個(gè)系統(tǒng)快速迭代,變得越來越復(fù)雜和難以理解的時(shí)候,抽象能非常好的幫助我們管理這些復(fù)雜性。

可見,一個(gè)接口在理論上需要清晰的將系統(tǒng)的使用者和該系統(tǒng)的實(shí)現(xiàn)隔離開。汽車系統(tǒng)是如此,其他系統(tǒng)也是如此。雖然設(shè)計(jì)者很努力,但現(xiàn)實(shí)往往是殘酷的,當(dāng)這個(gè)系統(tǒng)開始逐漸膨脹,一些用戶開始依賴一些通過接口暴露出的內(nèi)部的實(shí)現(xiàn)細(xì)節(jié),「內(nèi)卷」開始。。。

幾年前,Google 的一名工程師,Hyrum(海勒姆)觀察指出:

當(dāng) API 有足夠多的用戶時(shí),你在合同中的承諾已不重要:你系統(tǒng)的所有可觀察行為都將被某些人所依賴。

這也叫做「隱式接口定律」。

也就是說,當(dāng)你的 API 有足夠多的用戶時(shí),API 的所有行為(包括那些未囊括在公共說明中的一部分)最終都會被其他人所依賴。一個(gè)簡單的例子是 API  的響應(yīng)時(shí)間這種非功能性因素;還有一個(gè)更微妙的例子是:用戶使用正則表達(dá)式匹配錯(cuò)誤提示來判斷 API 的錯(cuò)誤類型,即使 API  文檔中沒有任何關(guān)于錯(cuò)誤提示的內(nèi)容,而是指導(dǎo)用戶應(yīng)該使用相應(yīng)的錯(cuò)誤代碼。一些用戶依然會使用錯(cuò)誤提示內(nèi)容(而非錯(cuò)誤代碼),這種情況下變更 API  錯(cuò)誤提示信息,實(shí)際上會破壞 API 的使用。

俗稱:不按套路出牌。

02 該定律在 Go 中的體現(xiàn)

隨著使用 Go 的人越來越多,大家超越 Go 規(guī)范,不滿足于 Go 公開的 API,「卷入」其內(nèi)部實(shí)現(xiàn)了。你會寫 Go  代碼,寫過大型項(xiàng)目可能都不夠,你必須得符合「海勒姆定律」,挖挖 GMP、GC 等 runtime 很多實(shí)現(xiàn)細(xì)節(jié)。

雖然 Go 官方一直在避免大家陷入實(shí)現(xiàn)細(xì)節(jié),依賴實(shí)現(xiàn)細(xì)節(jié),但還是擋不住「愛學(xué)習(xí)」的人們。比如 Go 中的 map  是無序的,但某個(gè)版本的實(shí)現(xiàn),用戶測試輸出,咦,發(fā)現(xiàn)是有序的。。。然后依賴它。Go 官方「一怒之下」,故意打亂順序。

再比如一個(gè)包中多個(gè)文件的初始化順序,規(guī)范并沒有進(jìn)行約定。但目前官方的實(shí)現(xiàn)是按照文件名順序初始化的,于是很可能就有面試題,并且多半答案就說是文件名順序,因?yàn)楝F(xiàn)在是這么實(shí)現(xiàn)的,源碼在那擺著呢。。。

再比如,Go 中 slice 的擴(kuò)容,太多太多文章解釋,擴(kuò)容的規(guī)則是怎么樣的,1.5 倍?2 倍?規(guī)范并沒有對此做約定。而且 Go  不同版本的實(shí)現(xiàn)還經(jīng)常變。用好 slice 貌似基本不能滿足要求,你必須得知道它怎么擴(kuò)容的,每次擴(kuò)容增加多少?這跟開車需要知道發(fā)動(dòng)機(jī)原理似乎沒啥區(qū)別~

還有很多很多例子,歡迎留言!

03 對我們有何啟發(fā)

在實(shí)際工作中,我們一方面要盡量設(shè)計(jì)好接口,將接口和實(shí)現(xiàn)隔離,但同時(shí)也要留意隱式接口問題。特別是對外提供服務(wù)(包括公司的基礎(chǔ)部門,對其他部門提供服務(wù)),要求我們在構(gòu)建和維護(hù)復(fù)雜系統(tǒng)的時(shí)候思考的更全面一點(diǎn)。我們需要意識到,隱示接口會限制我們系統(tǒng)的設(shè)計(jì)和發(fā)展。雖然隱式接口理論上不是你的鍋,但使用者不會這么認(rèn)為。

所以,「卷」有了理論依據(jù)。谷歌很多年前就用理論證明了「卷」的普遍存在,卷的有理有據(jù),你還能不倦嗎???

“什么是海勒姆定律”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

網(wǎng)頁題目:什么是海勒姆定律
網(wǎng)頁地址:http://bm7419.com/article22/geggcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、做網(wǎng)站網(wǎng)站制作、網(wǎng)站收錄、動(dòng)態(tài)網(wǎng)站、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)