敏捷軟件開發(fā) - 原則、模式與實踐 —— 敏捷設(shè)計(七)包的內(nèi)聚性原則

本文為敏捷軟件開發(fā) - 原則、模式與實踐系列的一部分。

本文對應(yīng)原書第20章前半部分

包的內(nèi)聚性原則

重用發(fā)布等價原則(REP - The Reuse/Release Equivalence Principle)

重用的粒度就是發(fā)布的粒度

REP指出,一個包的重用粒度可以和發(fā)布粒度一樣大。我們所重用的任何東西都必須同時被發(fā)布和跟蹤。簡單的編寫一個類,然后聲稱它是可重用的做法是不現(xiàn)實的。只有在建立一個跟蹤系統(tǒng),為潛在的使用者提供所需要的變更通知、安全性以及支持后,重用才有可能。

REP帶給我們了關(guān)于如何把設(shè)計劃分到包中的第一個提示。由于重用性必須是基于包的,所以可重用的包必須包含可重用的類。因此,至少,某些包應(yīng)該由一組可重用的類組成。

共同重用原則(CRP - The Common Reuse Principle )

一個包中的所有類應(yīng)該是共同重用的。如果重用了包中的一個類,那么就要重用包中的所有類。

這個原則可以幫助我們決定哪些類應(yīng)該放進同一個包中。它規(guī)定了趨向于共同重用的類應(yīng)該屬于同一個包。

類很少被孤立的重用。一般來說,可重用的類需要與作為該可重用抽象一部分的其它類協(xié)作。CRP規(guī)定了這些類應(yīng)該屬于同一個包。在這樣的一個包中,我們會看到類之間有很多的相互依賴。

CRP告訴我們更多的是,什么類不應(yīng)該放在一起。CRP規(guī)定相互之間沒有緊密聯(lián)系的類不應(yīng)該在同一個包中。

共同封閉原則(CCP - The Common Closure Principle )

包中的所有 類對于同一類性質(zhì)的變化應(yīng)該是共同封閉的。一個變化若對一個包產(chǎn)生影響,則將對該包中的所有類產(chǎn)生影響,而對于其他的包不造成任何影響。

這是單一責(zé)任原則對于包的重新規(guī)定。正如SRP規(guī)定的一個類不應(yīng)該包含多個引起變化的原因那樣,這條原則規(guī)定了一個包不應(yīng)該包含多個引起變化的原因。

CCP鼓勵我們把可能由于同樣的原因而更改的所有類共同聚集在同一個地方。如果兩個類之間有非常緊密的綁定關(guān)系,不管是物理上的還是概念上的,那么它們總是會一同進行變化,因而它們應(yīng)該屬于同一個包中。這樣做會減少軟件的發(fā)布、重新驗證、重新發(fā)行的工作量。

這個原則和開放封閉原則密切相關(guān)。本原則中 “封閉”這個詞和OCP中的具有同樣的含意。CCP通過把對于一些確定的變化類型開發(fā)的類共同組織到同一個包中,從而增強了上述內(nèi)容。因而,當需求中的一個變化到來時,那個變化就會很有可能被限制在最小數(shù)量的包中。

結(jié)論

這3個關(guān)于包內(nèi)聚性的原則揭示了,在選擇要共同組織到包中的類時,必須要考慮可重用性與可開發(fā)性之間的相反作用力。在這些作用力和應(yīng)用的需求之間進行平衡不是一件簡單的工作。此外,這個平衡幾乎總是動態(tài)的。

完整內(nèi)容請查看敏捷軟件開發(fā) - 原則、模式與實踐系列

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容