複製鏈接
請複製以下鏈接發送給好友

可複用性

鎖定
可複用性(Reusability)複用又叫重用,是重複使用的意思。一般軟件的複用率並不高,尤其在國內。複用的好處可以得到 較高的生產效率以及隨之而來的成本降低、較高的軟件質量(錯誤可以更快的被糾正)以及 恰當的使用複用可以改善系統的可維護性。
中文名
可複用性
外文名
Reusability
含    義
重複使用
目    的
成本降低、較高的軟件

可複用性傳統用法

可複用性代碼剪貼

最初步的複用,每塊代碼分散在各處,獨立的演變,仍需要針對每一塊修改和測試。這種複用帶來的好處很有限。

可複用性算法

在已有的成熟算法中選擇一個比自己重新開發一個好的多。比如排序算法。這就是算法的複用。

可複用性數據結構

比如隊列、棧、鏈表,在實踐中得到了大量的應用。
傳統的複用種類各有優點也有各自的缺陷。
(LY注:有哪些優勢和缺陷呢?)

可複用性可維護性關係

傳統複用方案的致命缺陷是複用常常以破壞可維護性為代價的。
因此我們要支持可維護性的複用,即在保持甚至提高系統的可維護性的同時,實現系統的複用。
(LY注:舊有複用方式的缺陷是為了複用破壞了可維護性,或者説支持那些維護性差的複用。歸根到底是因為,將不應該複用在一起的東西複用在了一起。設計上就出現了混亂。良好的設計不應該出現這種後果。而現在我們僅考慮支持可維護性的複用。將相關的東西放在一起,不相關的部分即使看似相同可以複用,也不能這樣做。因為這種可複用其實是偶然的,以後系統一旦變化,這種所謂的“相同”就消失了。不知道我這個理解是否正確。)

可複用性面向對象設計

在面嚮對象語言中,語言具有的良好特性,使得細節的複用變得簡單成熟而不再是重點。複用的重點在於帶有商業邏輯的抽象層次上。這是提高複用性同時保持和提高可維護性的關鍵。
抽象層次應是較為穩定的,是複用的重點。抽象層次的模塊相對獨立於具體層次。這樣具體層次內部的變化就不會影響到抽象層次,抽象層次的模塊複用會較為容易。
在面向對象設計中,可維護性複用以設計原則和設計模式為基礎。

可複用性支持可維護性

針對三個目標,可擴展性、靈活性、可插入性。

可複用性可擴展性

允許一個具有同樣接口的新類替代舊類,是對抽象接口的複用。客户端依賴於抽象接口,而不是一個具體實現類,使得這個具體類可以被別的具體類替換,而不影響客户端。這提高了系統的可擴展性。
系統可擴展性由“開-閉”原則、里氏代換原則、依賴倒轉原則和組合/聚合複用原則所保證。(LY:“開-閉”原則,是指一個軟件實體應當對擴展開放,對修改關閉,即可以在不修改的情況下擴展。里氏代換原則,是指任何基類可以出現的地方,子類一定可以出現。依賴倒轉原則,是指要依賴於抽象,不要依賴於實現。合成/聚合複用原則,是指要儘量使用合成/聚合,而不是繼承關係來達到複用目的。)

可複用性靈活性

模塊相對獨立,通信儘可能少。這樣當一個模塊修改時,對別的模塊的影響很小。
這由“開-閉”原則、迪米特法則、接口隔離原則保證的。
(LY注:迪米特法則,是指一個軟件實體應該與儘可能少的其他實體發生相互作用。 接口隔離原則,是指應當為客户端提供儘可能小的單獨的接口,而不要提供大的總接口)

可複用性可插入性

當一部分不再滿足需要時,可以將舊的部分拔出,新的部分插入。
可插入性由“開-閉”原則、里氏代換原則、依賴倒轉原則和組合/聚合複用原則所保證。
這樣,在提高一個系統可維護性的同時,提高了這個系統的可複用性。具體的設計原則有:
l         “開-閉”原則
l         里氏代換原則
l         依賴倒轉原則
l         接口隔離原則
l         組合/聚合複用原則
l         迪米特法則
這些原則首先是複用的原則,遵循這些原則可以有效提高系統的複用性,同時提高系統的可維護性。

可複用性設計模式幫助

設計模式是將OO設計理論應用到實踐中的例子。設計模式分為創建模式、結構模式和行為模式。設計模式本身不能保證系統的可複用性和可維護性。但是通過學習這些設計模式的思想可以提高設計師的水平,加強與同行的交流,從而幫助設計師提高系統設計的可複用性和可維護性。