架構整潔之道
內容描述
《架構整潔之道》是創造“Clean神話”的Bob大叔在架構領域的登峰之作,圍繞“架構整潔”這一重要導向,系統地剖析其緣起、內涵及應用場景,涵蓋軟件研發完整過程及所有核心架構模式。本書分為6部分,第1部分綱領性地提出軟件架構設計的終極目標,描述軟件架構設計的重點與模式;第2~4部分從軟件開發中三個基礎編程範式的定義和特徵出發,進一步描述函數、組件、服務設計與實現的定律,以及它們是如何有效構建軟件系統的整體架構的;第5部分從整潔架構的定義開始,詳細闡述軟件架構設計過程中涉及的方方面面,包括劃分內部組件邊界、應
目錄大綱
第1部分概述
第1章設計與架構究竟是什麼3
目標是什麼4
案例分析5
本章小結11
第2章兩個價值維度12
行為價值13
架構價值13
哪個價值維度更重要14
艾森豪威爾矩陣15
為好的軟件架構而持續鬥爭16
第2部分從基礎構件開始:編程範式
第3章編程範式總覽21
結構化編程22
面向對象編程22
函數式編程23
僅供思考23
本章小結24
第4章結構化編程25
可推導性26
goto是有害的28
功能性降解拆分29
形式化證明沒有發生29
科學來救場29
測試30
本章小結31
第5章面向對象編程32
封裝33
繼承36
多態38
本章小結44
第6章函數式編程45
整數平方46
不可變性與軟件架構47
可變性的隔離48
事件溯源49
本章小結51
第3部分設計原則
第7章SRP:單一職責原則56
反面案例2:代碼合併59
解決方案60
本章小結61
第8章OCP:開閉原則62
思想實驗63
依賴方向的控制67
信息隱藏67
本章小結67
第9章LSP:里氏替換原則68
繼承的使用指導69
正方形/長方形問題70
LSP與軟件架構70
違反LSP的案例71
本章小結73
第10章ISP:接口隔離原則74
ISP與編程語言76
ISP與軟件架構76
本章小結77
第11章DIP:依賴反轉原則78
穩定的抽象層79
工廠模式80
具體實現組件82
本章小結82
第4部分組件構建原則
第12章組件84
組件發展史85
重定位技術88
鏈接器88
本章小結90
第13章組件聚合91
復用/發布等同原則92
共同閉包原則93
共同復用原則94
組件聚合張力圖95
本章小結97
第14章組件耦合98
無依賴環原則99
自上而下的設計105
穩定依賴原則106
穩定抽象原則112
本章小結117
第5部分軟件架構
第15章什麼是軟件架構120
開發(Development) 122
部署(Deployment ) 123
運行(Operation) 123
維護(Maintenance) 124
保持可選項124
設備無關性126
垃圾郵件128
物理地址尋址129
本章小結130
第16章獨立性131
用例132
運行133
開發133
部署134
保留可選項134
按層解耦135
用例的解耦136
解耦的模式136
開發的獨立性137
部署的獨立性137
重複138
再談解耦模式139
本章小結141
第17章劃分邊界142
幾個悲傷的故事143
FitNesse 146
應在何時、何處畫這些線148
輸入和輸出怎麼辦151
插件式架構152
插件式架構的好處153
本章小結154
第18章邊界剖析155
跨邊界調用156
令人生畏的單體結構156
部署層次的組件158
線程159
本地進程159
服務160
本章小結161
第19章策略與層次162
層次(Level) 163
本章小結166
第20章業務邏輯167
業務實體168
用例169
請求和響應模型171
本章小結172
第21章尖叫的軟件架構173
架構設計的主題174
架構設計的核心目標175
那Web呢175
框架是工具而不是生活信條175
可測試的架構設計176
本章小結176
第22章整潔架構177
依賴關係規則179
一個常見的應用場景183
本章小結184
第23章展示器和謙卑對象185
謙卑對像模式186
展示器與視圖186
測試與架構187
數據庫網關188
數據映射器188
服務監聽器189
本章小結189
第24章不完全邊界190
省掉最後一步191
單向邊界192
門戶模式193
本章小結193
第25章層次與邊界194
基於文本的冒險遊戲:Hunt The Wumpus 195
可否採用整潔架構196
交匯數據流199
數據流的分割199
本章小結201
第26章Main組件203
最細節化的部分204
本章小結208
第27章服務:宏觀與微觀209
面向服務的架構210
服務所帶來的好處210
運送貓咪的難題212
對象化是救星213
基於組件的服務215
橫跨型變更216
本章小結216
第28章測試邊界217
測試也是一種系統組件218
可測試性設計219
測試專用API 220
本章小結221
第29章整潔的嵌入式架構222
“程序適用測試”測試225
目標硬件瓶頸228
本章小結238
第6部分實現細節
第30章數據庫只是實現細節240
關係型數據庫241
為什麼數據庫系統如此流行242
假設磁盤不存在會怎樣243
實現細節243
但性能怎麼辦呢244
一段軼事244
本章小結246
第31章Web是實現細節247
無盡的鐘擺248
總結一下250
本章小結251
第32章應用程序框架是實現細節252
框架作者253
單向婚姻253
風險254
解決方案255
不得不接受的依賴255
本章小結256
第33章案例分析:視頻銷售網站257
產品258
用例分析258
組件架構260
依賴關係管理261
本章小結262
第34章拾遺263
按層封裝264
按功能封裝266
端口和適配器268
按組件封裝270
具體實現細節中的陷阱274
組織形式與封裝的區別275
其他的解耦合模式277
本章小結:本書拾遺279
後序280
附錄A 架構設計考古283
作者介紹
作者:(美)Robert C. Martin(羅伯特C.馬丁)譯者:孫宇聰
Robert C. Martin,Object Mentor公司總裁,面向對象設計、模式、UML、敏捷方法學和極限編程領域的資深顧問。他是Designing Object-Oriented C++ Applications Using the Booch Method以及Jolt獲獎圖書Agile Software Development, Principles,Palterns,and Practices(中譯版《敏捷軟件開發:原則、模式與實踐》)《代碼整潔之道》等暢銷書作者。
孫宇聰:曾在谷歌工作多年,任谷歌高級SRE(Senior Site Reliblity Engineer),前Coding.net技術負責人。