整潔代碼之道 8 邊界

介紹一些保持軟件邊界(和其他接口對接的界限)整潔的實踐手段和技巧

8.1 使用第三方代碼

  1. 第三方程序包和框架提供者追求 普適性 ,這樣就能在多環境中工作,吸引廣泛的用戶
  2. 使用者則想要集中滿足特定需求接口
  3. 接口提供方和接口使用方在期望值上的差異,就會導致系統在邊界上出現問題

8.1.1 舉一個 Map 的例子

  1. java.util.Map 是 Java 提供的一個接口和功能都很豐富的對象
  2. 但是當我們通過 Map 進行內容傳遞時,如果想要禁止調用者刪除裏面存入的數據,卻很難做到
  3. 因爲 Map 的 clear() 方法是對外公開的,任何調用者都可以直接使用
  4. 除非通過以下方式將 Map 獲取數據的方式進行封裝
public class Sensors {
  private Map sensors = new HashMap();

  public Sensor getById(String id) {
    return (Sensor) sensors.get(id);
  }
}

8.2 瀏覽和學習邊界

  1. 在接入第三方代碼時,不要在生產代碼中直接接入
  2. 應該先編寫測試來遍覽和理解第三方代碼,這種方式叫 學習性測試( Learning Tests )

8.3 學習 log4j

  1. 使用標準的日誌工具類來操作系統日誌,是構建項目的不二之選

8.4 學習性測試的好處不只是免費

  1. 當需要接入第三方接口時,不論如何都無法避免去學習其中的 APi
  2. 而編寫測試則是獲得這些知識的 即容易,又不會影響其他工作 的途徑
  3. 而且,當第三方程序包發佈了新版本,可以通過之前編寫的學習性測試看看程序包的行爲是否發生改變

8.5 使用尚不存在的代碼

  1. 如果系統的部分邊界是需要和其他項目對接
  2. 提前編寫我們想要得到的接口,有助於保持客戶代碼高可讀性
  3. 例如現在盛行的前後分離項目,前後端工程師先說出各自對接口的期望,然後同步開發,前端工程師通常會使用 mock.js 工具進行接口模擬

8.6 整潔的邊界

  1. 良好的軟件設計,後期無需巨大投入和重寫即可對系統進行修改
  2. 而整潔的邊界有助於將系統本身和第三方代碼分割開來,當後期需要替換時工作量就更小
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章