Kubernetes 是 Google 開源的一個(gè)容器編排引擎,它支持自動(dòng)化部署、大規(guī)模可伸縮、應(yīng)用容器化管理。Kubernetes 簡(jiǎn)稱 K8s,用「8」替代 K 和 s 之間的 8 個(gè)字母「ubernete」。
K8s 的 pv_controller.go 源碼大約 1700 行(含注釋),其中包括:230+ 個(gè) if 語句、30 個(gè) else 語句、5 個(gè) else if 語句嵌套在一起。
乍一看,這代碼違背了 KISS (Keep it simple, stupid)原則。
但是,K8s 的工程師們?cè)谧⑨屩杏么髮懹⑽臉?biāo)注:“請(qǐng)不要嘗試簡(jiǎn)化這些代碼!”并且還寫了兩遍。
為啥強(qiáng)調(diào)兩遍?K8s 他們?cè)谧⑨屩刑匾饨忉屃?。大意如下?br /> 這個(gè)控制器故意以一種非常冗長(zhǎng)的風(fēng)格編寫。你會(huì)發(fā)現(xiàn):
1、每個(gè) if 語句都有一個(gè)匹配的 else 語句(檢查客戶端 API 調(diào)用的簡(jiǎn)單錯(cuò)誤除外);
2、有很多被顯式地注釋的東西;
我們把這種風(fēng)格叫做“航天飛機(jī)風(fēng)格”。航天飛機(jī)的風(fēng)格意味著,要確保每個(gè)分支和條件都得到考慮和說明。NASA 為航天飛機(jī)等應(yīng)用程序編寫的代碼也是如此。
最初,這個(gè)控制器的工作被分成三個(gè)控制器??刂破魇桥?jiǎn)化 PV 子系統(tǒng)的成果。在此過程中,我們要確保在代碼中處理和解釋了每一個(gè)條件,即使這會(huì)導(dǎo)致無 op 代碼分支。
因此,控制器代碼可能看起來過于冗長(zhǎng)、注釋過多和“分支”。但是,這里記錄了大量的業(yè)務(wù)知識(shí)和上下文,以便確保未來的維護(hù)者能夠正確地推斷綁定行為的復(fù)雜性。因此,對(duì)這個(gè)文件的修改,應(yīng)該保留并增加航天飛機(jī)的風(fēng)格。
新聞標(biāo)題:網(wǎng)站建設(shè)中程序員請(qǐng)不要嘗試簡(jiǎn)化這些代碼!
新聞來源:http://redsoil1982.com.cn/news/114560.html
網(wǎng)站建設(shè)、網(wǎng)絡(luò)推廣公司-創(chuàng)新互聯(lián),是專注品牌與效果的網(wǎng)站制作,網(wǎng)絡(luò)營銷seo公司;服務(wù)項(xiàng)目有網(wǎng)站建設(shè)等
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源:
創(chuàng)新互聯(lián)