最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

分享到微博請遵守國家法律
桐梓县| 林口县| 安西县| 任丘市| 南漳县| 千阳县| 清新县| 塘沽区| 竹溪县| 濮阳市| 十堰市| 屯门区| 巴中市| 宝兴县| 大邑县| 双流县| 西丰县| 辉县市| 阳春市| 保定市| 拉萨市| 武城县| 华宁县| 碌曲县| 宜君县| 建昌县| 昌吉市| 罗江县| 武乡县| 阿拉善左旗| 阿拉善盟| 遵义县| 鄢陵县| 阜康市| 虎林市| 沾化县| 石柱| 嘉兴市| 天峻县| 泸西县| 酒泉市|