国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Clean Code 無瑕的程式碼 第10章 類別

2021-06-17 23:12 作者:tkchenhaha  | 我要投稿

?? ? ? 第十章作者用Java的類別做範例,文中會提到開放-閉合原則(Open-Closes Principle, OCP)與相依性反向原則 (Dependency Inversion Principle,DIP),初次看到的讀者一定不太懂,可參考作者其他作品或其他作者的書籍,再回來看第十章會比較容易理解。

類別的結(jié)構(gòu)

Java的類別結(jié)構(gòu)如下

公用靜態(tài)常數(shù)

私有靜態(tài)變數(shù)

私有實體變數(shù)

公用函數(shù)

私有函數(shù)

封裝

有時候為了測試程式,要用保護(protected)取代私有。

類別要夠簡短

作者認為類別要越簡短越好,從「職責的數(shù)量」判斷類別的長短。

10-1 是錯誤示範

10-2 已經(jīng)很短,作者認為還不夠短,還是有過多的職責。

單一職責原則(Single Responsiblity Principle, SRP)

一個類別或模組應該只有一個修改的理由。

10-2 SuperDashboard有兩個修改的理由

追蹤版本訊息

管理元件

10-3 改寫成單一職責的類別

讓軟體能夠運作與讓軟體保持整潔是兩件不同的事情。寫程式都是先讓軟體能夠運作,再讓軟體保持整潔。

遵守單一職責原則會出現(xiàn)小型類別眾多的情況。

凝聚性

一個類別每個變數(shù)都被使用在每個方法中,類別就是具有最大的凝聚性。

凝聚性高代表類別裡的方法和變數(shù)是互相依賴。

10-4 是有凝聚性的類別。

保持凝聚性會得到許多小型的類別

當類別喪失凝聚性的時候,將它們拆解開。

10-6 到 10-8 作者示範拆解 10-5 的程式。

拆解之後

程式變更長

可使用有註解效果的函數(shù)與類別名稱

用空白與編排技巧維持可讀性

為了變動而構(gòu)思組織

10-9 範例是被改革的對象

10-10 範例是重構(gòu)之後的結(jié)果,原有的sql類別拆成一組封閉的類別。建立一個抽象類別Sql,其他功能類別繼承Sql類別。

新增update功能只需要新增新的子類別UpdateSql類別,不用修改舊有的程式。

支持單一職責原則也支持開放-閉合原則(Open-Closes Principle, OCP)。

可新增UpdateSql功能所以有開放性。

不會影響舊有的程式所以有閉合性。

隔離修改

技巧類似圖8-2。作者想做到耦合最小化,讓程式遵守相依性反向原則(Dependency Inversion Principle,DIP)。類別應該要相依於抽象概念,而不是相依在具體細節(jié)上。

Portfolio類別不能直接使用TokyoStockExchange API,每分鐘會得到不同的結(jié)果會無法寫測試程式。

作者進行依賴反向新增StockExchange介面,由TokyoStockExchange類別實作StockExchange介面

有一個測試用FixedStockExchange類別實作StockExchange介面送出固定值,可完成測試程式。


Clean Code 無瑕的程式碼 第10章 類別的評論 (共 條)

分享到微博請遵守國家法律
呼伦贝尔市| 三穗县| 晋宁县| 石阡县| 杭锦旗| 凤城市| 宁城县| 车险| 峡江县| 莲花县| 嘉善县| 临汾市| 峨边| 乐安县| 梁山县| 西林县| 小金县| 麻江县| 灵川县| 灵石县| 晋州市| 温州市| 甘谷县| 莱西市| 丹凤县| 淳安县| 新兴县| 晋州市| 晋中市| 西畴县| 托克逊县| 铜鼓县| 宣武区| 晋宁县| 绥阳县| 常宁市| 南雄市| 古浪县| 海盐县| 东海县| 江山市|