《java與模式》筆記(一) 軟件的可維護性和可複用性

ξ 3.1 軟件系統的可維護性

☆ 導致一個軟件設計的可維護性較低,也就是說會隨着性能要求的變化二“腐爛”的真正原因有四個:
 ① 過於僵硬
 加入一個新性能,不僅僅意味着建造一個獨立的模塊,而且因爲這個新性能會波及很多其他的模塊,最好變成跨越幾個模塊的改動。

 ② 過於脆弱
 對一個地方的修改,往往會導致看上去沒什麼關係的另外一個地方發生故障。儘管在修改之前,設計師會盡力預測可能的故障點,當是修改完成之前,系統的原始設計師們甚至都無法預測到可能會波及的地方。

 ③ 複用率低
 每當程序員發現一段代碼、函數、模塊所做的事情是可以在新的模塊、或者新系統中使用的是,他們總是發現,這些已有的代碼依賴於一堆其他的東西,以至於很難將它們分開。最好他們發現最好的辦法就是不去“碰”這些已有的東西,而是重新寫自己的代碼。他們可能會使用源代碼拷貝的辦法,以最原始的複用方式,節省一些時間。

 ④ 黏度過高
 有的時候,一個改動可以以保存原始設計意圖和原始設計框架的方式進行,也可以以破壞原始意圖和框架的方式進行。一個系統設計,如果總是使得第二種辦法比第一種辦法容易,就叫黏度過高。一個黏度過高的系統會誘使維護它的程序員採取錯誤的維護方案,並懲罰採取正確維護方案的程序員。

☆ 一個好的系統俄軍應該有如下的性質:
 ① 可擴展性
 新的性能可以很容易地加入到系統中去,就是可擴展性。這就是系統“過於僵硬”的屬性的方面。

 ② 靈活性
 可以允許代碼修改平穩地發生,而不會波及到很多其他的模塊,這就是靈活性。靈活性其實就是“過於脆弱”的屬性的方面。

 ③ 可插入性
 可以很容易地將一個類抽出去,同時將另外一個有同樣接口的類加入進來,這就是可插入性。其實,這就是“黏度過高”的方面。

ξ 3.2 系統的可複用性

☆ 軟件複用的好處
第一,較高的生產效率;
第二,較高的軟件質量;
第三,恰當使用複用可以改善系統的可維護性。

☆ 傳統的複用形式
 ① 代碼的剪貼複用;
 ② 算法的複用;
 ③ 數據結構的複用。

☆ 提高系統可維護性和可複用性的設計原則
 ① “開-閉”原則(Open-Closed Principle,或者OCP);
 ② 里氏替代原則(Liskov Substitution Principle,或者LSP);
 ③ 依賴倒轉原則(Dependency Inversion Principle,或者DIP);
 ④ 接口隔離原則(Interface Segregation Principle,或者ISP);
 ⑤ 組合/聚合複用原則(Composition/Aggregation Principle,或者CARP);
 ⑥ 迪米特法則(Law of Demeter,或者LoD); 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章