架構整潔之道 架构整洁之道

Robert C. Martin

買這商品的人也買了...

商品描述

《架構整潔之道》是創造“Clean神話”的Bob大叔在架構領域的登峰之作,圍繞“架構整潔”這一重要導向,系統地剖析其緣起、內涵及應用場景,涵蓋軟件研發完整過程及所有核心架構模式。本書分為6部分,第1部分綱領性地提出軟件架構設計的終極目標,描述軟件架構設計的重點與模式;第2~4部分從軟件開發中三個基礎編程範式的定義和特徵出發,進一步描述函數、組件、服務設計與實現的定律,以及它們是如何有效構建軟件系統的整體架構的;第5部分從整潔架構的定義開始,詳細闡述軟件架構設計過程中涉及的方方面面,包括劃分內部組件邊界、應

作者簡介

作者:(美)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技術負責人。

目錄大綱

第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