可復用性

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

基本介紹

  • 中文名:可復用性
  • 外文名:Reuseability
  • 含義:重複使用
  • 目的:成本降低、較高的軟體
傳統用法,代碼剪貼,算法,數據結構,可維護性關係,面向對象設計,支持可維護性,可擴展性,靈活性,可插入性,設計模式幫助,

傳統用法

代碼剪貼

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

算法

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

數據結構

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

可維護性關係

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

面向對象設計

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

支持可維護性

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

可擴展性

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

靈活性

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

可插入性

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

設計模式幫助

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

相關詞條

熱門詞條

聯絡我們