- Review of Agile Software Development: Principles, Patterns, and Practices
- 本書主要包含4部分內容,這些內容對於今天的軟件工程師都非常的重要,它們是:
●Agile方法:主要講述瞭如何去使用Agile方法,其中有很大一部分內容是告訴你爲什麼要這樣做。
●面向對象設計原則:本書包含了11個面向對象設計原則,涵蓋了包的設計和類的設計。
●設計模式:本書中講述了23個設計模式,並都有具體的實例。講解的重點在如何在實際的應用中去使用模式,如何根據當前問題的上下文以及約束力去選擇最適合的模式,以及何時避免使用模式。
●UML:本書不是關於UML的,但是爲了讓讀者更好的理解書中的內容,作者使用了一些UML圖來展示設計思路。同時,本書中也對如何有效的使用UML做了深入的闡述。本書中有兩個附錄專門對UML進行了簡介。 - --個人覺得面向對象設計原則是本書的精華。
- 摘抄自《敏捷軟件開發-原則、方法與實踐》-Robert C. Martin
(1)SRP 單一職責原則
就一個類而言,應該僅有一個引起它變化的原因。
職責即爲"變化的原因".
(2)OCP 開放封閉原則
軟件實體(類、模塊、函數等)應該是可以擴展的,但是不可修改。
對於擴展是開放的,對於更改是封閉的.
關鍵是抽象.將一個功能的通用部分和實現細節部分清晰的分離開來.
開發人員應該僅僅對程序中呈現出頻繁變化的那些部分作出抽象.拒絕不成熟的抽象和抽象本身一樣重要.
(3)LSP Liskov替換原則
子類型必須能替換掉他們的基本類型
(4)DIP 依賴倒置原則
抽象不應該依賴於細節。細節應該依賴於抽象。
Hollywood原則: "Don't call us, we'll call you".程序中所有的依賴關係都應該終止於抽象類和接口。針對接口而非實現編程。
任何變量都不應該持有一個指向具體類的指針或引用。
任何類都不應該從具體類派生。
任何方法都不應該覆寫他的任何基類中的已經實現了的方法。
(5)ISP 接口隔離原則
不應該強迫客戶依賴於他們不用的方法。接口屬於客戶,不屬於他所在的類層次結構。
多個面向特定用戶的接口勝於一個通用接口。
(6)REP 重用發佈等價原則
重用的粒度就是發佈的粒度.
(7)CCP 共同重用原則
一個包中的所有類應該是共同重用的。如果重用了包中的一個類,那麼就要重用包中的所有類。
相互之間沒有緊密聯繫的類不應該在同一個包中。
(8)CRP 共同封閉原則
包中的所有類對於同一類性質的變化應該是共同封閉的。一個變化若對一個包影響,則將對包中的所有類產生影響,而對其他的包不造成任何影響.
(9)ADP 無依賴原則
在包的依賴關係中不允許存在環.
細節不應該被依賴.
(10)SDP 穩定依賴原則
朝着穩定的方向進行依賴.
應該把封裝系統高層設計的軟件(比如抽象類)放進穩定的包中,不穩定的包中應該只包含那些很可能會改變的軟件(比如具體類)。
(11)SAP 穩定抽象原則
包的抽象程度應該和其他穩定程度一致.
一個穩定的包應該也是抽象的,一個不穩定的包應該是抽象的.
(12)DAP(Default Abstraction Principle)缺省抽象原則
在接口和實現接口的類之間引入一個抽象類,這個類實現了接口的大部分操作.
(13)IDP(Interface Design Principle)接口設計原則
規劃一個接口而不是實現一個接口。
(14)BBP(Black Box Principle)黑盒原則
多用類的聚合,少用類的繼承。
(15)DCSP(Don't Concrete Supperclass Principle)不要構造具體的超類原則
避免維護具體的超類。