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