單一職責(zé)與樹的聯(lián)系寫點筆記關(guān)注共 1119字,需瀏覽 3分鐘 ·2021-05-23 21:55 之前我們在寫重構(gòu)的學(xué)習(xí)筆記的時候說我們寫代碼的時候要盡量做到一個類只做領(lǐng)域內(nèi)的事,不能跨領(lǐng)域做事,不能幫其他領(lǐng)域做事,并要求一個類應(yīng)該將其相關(guān)的業(yè)務(wù)能力做到最好。對于微服務(wù)也是一樣的,要進(jìn)行抽練進(jìn)行業(yè)務(wù)的沉淀,然后形成優(yōu)質(zhì)代碼資產(chǎn)。那么這里說的單一職責(zé)原則是否就是這個意思?讓我們一探究竟吧!單一職責(zé)原則:就一個類而言,應(yīng)該僅有一個引起它變化的原因。單一職責(zé)原則其實說的是一種理念,就是各掃門前雪的理念。我們在編寫代碼中要善于將業(yè)務(wù)類進(jìn)行抽練和歸納,讓代碼更加清晰,小的變動不會引起大規(guī)模的改造。這塊我們稍微舉個例子就是說我們對于一個商品的價格的總價進(jìn)行計算,如果我們將價格還有打折或者促銷甚至積分等業(yè)務(wù)都合并到一個類中,那么我們這個類將會變的很大,而且如果涉及的商品比較多的時候,甚至商品具有不同的屬性,那么用一個類去兼容各種情況未免太傻逼了。最后的最后就是一處改動導(dǎo)致多處改動,在某些情況下開發(fā)人員甚至?xí)x擇直接類的代碼復(fù)制過來去兼容新的業(yè)務(wù),但是兩者代碼的相似性很強(qiáng),所以必然就是代碼中的壞味道。針對這種情況,有什么好的解決辦法?我們整個業(yè)務(wù)流程勢必要聚合各種類,也就是說我們已經(jīng)做好了單一職責(zé),就是將不同的領(lǐng)域內(nèi)的功能和數(shù)據(jù)進(jìn)行拆分。但是考慮與一個決策的過程,那么勢必有個聚合決策的過程,這里我們可把以聚合決策的類抽練出來,因為這個類的領(lǐng)域就是決策和調(diào)度,因此也符合單一職責(zé)原則。在具體的處理類上,因為我們已經(jīng)將決策的屬性外提,因此剩余的部分就是該領(lǐng)域的功能。綜合上邊的敘述,我們在開發(fā)中應(yīng)該要善于將邏輯調(diào)度進(jìn)行抽練形成調(diào)度器類,而將單一領(lǐng)域內(nèi)的業(yè)務(wù)處理下沉形成運(yùn)算器。這樣使得我們的業(yè)務(wù)流程不再是一個整體,而是多個運(yùn)算單元和調(diào)度單元組成,如果發(fā)生修改,那么我僅僅需要修改具體的運(yùn)算單元或者調(diào)度單元即可。作者大概的想了一下,對于一條業(yè)務(wù)流程來說,我們的代碼要遵循單一職責(zé)原則,就應(yīng)該將代碼的組成分為決策調(diào)度類和運(yùn)算單元類的組合模式,如上圖所示。1、兩個運(yùn)算單元類不能直接調(diào)度,運(yùn)算單元類的調(diào)度應(yīng)該由決策調(diào)度類進(jìn)行整合。2、決策調(diào)度類可以任意接納決策調(diào)度類和運(yùn)算單元類。我們更認(rèn)為好的代碼應(yīng)該是形似一棵樹,樹的分支我們認(rèn)為就是決策調(diào)度類,用來進(jìn)行上下游資料養(yǎng)分的傳遞,運(yùn)算單元類我們可以認(rèn)為是樹葉,主要就是光合作用進(jìn)行數(shù)據(jù)加工。樹枝上可以長樹葉也可以長樹枝,但是樹葉上是不能長出樹枝的。 瀏覽 33點贊 評論 收藏 分享 手機(jī)掃一掃分享分享 舉報 評論圖片表情視頻評價全部評論推薦 單一的現(xiàn)代性相同ISBN的還有《詹姆遜文集·第4卷:現(xiàn)代性、后現(xiàn)代性和全球化》,[美]F.R.詹姆遜(Fredr單一的愛單一的愛0單一的現(xiàn)代性單一的現(xiàn)代性0大鴿子的職責(zé)大鴿子的職責(zé)0身份、邊界與社會聯(lián)系查爾斯?蒂利被譽(yù)為“21世紀(jì)社會學(xué)之父”,在本書中,蒂利對社會過程進(jìn)行了與眾不同、一以貫之的闡述。社身份、邊界與社會聯(lián)系身份、邊界與社會聯(lián)系0神子的職責(zé)神子的職責(zé)0大鴿子的職責(zé)大鴿子的職責(zé)0風(fēng)與樹的歌風(fēng)與樹的歌0樹,與景觀的一部分約瑟夫·瑪羅德·威廉·特納0點贊 評論 收藏 分享 手機(jī)掃一掃分享分享 舉報