Clean Code 無瑕的程式碼 第8章 邊界
2021-06-16 23:23 作者:tkchenhaha | 我要投稿
第八章圖畫表現出邊界的重要性,男性角色明顯超過了邊界,作者描述如何處理第三方軟體保持系統邊界整潔。
使用第三方軟體的程式碼
clear() void - Map
Map 介面有一個 clear() 函數,若不希望每個使用者都會呼叫clear()刪除內容,可用包裹(wrap)的方法將Map介面隱藏。
public class Sensors{
private Map sensors = new HashMap();
public Sensor getById(String id){
return (Sensor) sensors.get(id);
}
}
探索及學習邊界
使用第三方API程式的時候要寫測試程式。
學習式測試比照應用程式來呼叫第三方API程式,重點在於我們想要從第三方API獲得什麼樣的結果?
學習log4j
作者舉例與log4j做戰的經驗,同樣用包裹(wrap)將應用程式其他部分與log4j隔離。
學習式測試比不花功夫更好
第三方測試改版的時候可以執行測試程式,來觀察行為上有無任何改變。
使用尚未存在的程式
程式有部分未完成依然可以繼續持續開發,作者舉出工作曾經遇到的案例。
參考圖8-2
Transmitter API 還沒有準備好,可先寫Fake Transmitter 。
Transmitter API 寫好之後,可用Transmitter Adapter + Transmitter API 取代Fake Transmitter 。
(與設計模式Adapter 有關)
簡潔的程式邊界
好的軟體設計要能夠處理邊界上的變化。
控制第三方軟體,而不是被第三方軟體控制。
用封裝或ADAPTER設計模式對應第三方軟體,保持邊界整潔。