---
# System prepended metadata

title: 系統邊界
tags: [CleanCode]

---

###### tags: `CleanCode`
<STYLE>
p,li,oi,h3{
font-family:"微軟正黑體";
}
</STYLE>
# 系統邊界
藉由讓程式在最少處引用第三方軟體的方式，來管理其邊界。
可以將其進行封裝或者使用一個ADAPTER(轉接器)，將自己定義的介面轉換成第三方提供的介面。
![](https://i.imgur.com/S6tppAf.png)

例：
![](https://i.imgur.com/RVAbls2.png)
原先使用泛型的方式傳遞Map＜Sensor＞的實體，透過以上的方式邊界上的介面(亦即Map)被隱藏起來。也就是說，轉型與型態管理都在Sensor裡頭進行轉換了。
# 
#### 學習式測試
要學習第三方軟體時，可以另外撰寫一些測試程式，來探索了解第三方軟體。又叫做學習式測試(Jim Newkirk金.紐寇克)。
邊界測試的重點在於
:::success

* 助於驗證第三方軟體API是否按照預期般的執行
* 助於增進對API的瞭解
* 當第三方軟體套件修改升級時，能執行這些學習式測試，來檢驗軟體套件在行為上是否有變動處。

:::