五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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章 類別的評論 (共 條)

分享到微博請遵守國家法律
西乌珠穆沁旗| 卢氏县| 汶上县| 休宁县| 淅川县| 耒阳市| 肃南| 巍山| 安吉县| 竹北市| 兴城市| 泸溪县| 密云县| 上饶县| 正阳县| 攀枝花市| 西乌珠穆沁旗| 锡林郭勒盟| 三台县| 垦利县| 通辽市| 昭苏县| 温州市| 大新县| 当阳市| 宁化县| 潮安县| 武宣县| 自贡市| 阳山县| 文化| 郧西县| 张家口市| 仙居县| 会泽县| 威海市| 霸州市| 中卫市| 砀山县| 潢川县| 海兴县|