# Outline
一、前言
二、論述
A、待敘項目
# TL;DR
Branch By Abstraction (BBA) 是一個在版本控制中早就流傳已久卻鮮為人知的推薦實踐,因此在 2007 年 Paul Hammant 寫文介紹了這個概念並且命名為 Branch By Abstraction,Martin Flower 也在 2014 年時寫文章說明。
BBA 的核心概念就在於,用程式架構面的抽象來取代原本習慣在版本控制系統進行的事情,不再透過分支去管理那個 feature 何時要併回主線去發佈,去減少整合上的成本。
比如說我今天有一個元件 A 想要更改實作,我那我就會先在 A 與相依 A 的元件中間建立一個抽象層,然後開始相依該抽象層去編寫新的實作 B,再把原本參考 A 的元件改成 B,最後就可以把 A 給廢棄了。
這樣的好處在於,透過抽象層的建立,我們得知新的元件應該要實作哪些介面才可以在取代原先元件時無縫接軌,然後我們就可以不斷的編寫新的元件,不怕影響到現有程式的穩定,並透過單元測試確保新元件的品質。所以我們就不再需要分支去隔離新元件和舊元件同時存在的版本,也不怕為了隔離新元件剛開始開發而無法發佈的期間產生多餘的整合成本。