出版時間:2008-1 出版社:人民郵電出版社 作者:馬丁 頁數(shù):538
Tag標簽:無
前言
要想成為一名優(yōu)秀的軟件開發(fā)人員,需要熟練應(yīng)用編程語言和開發(fā)工具,更重要的是能夠領(lǐng)悟優(yōu)美代碼背后的原則和前人總結(jié)的經(jīng)驗——這正是本書的主題。本書凝聚了世界級軟件開發(fā)大師Robet C.Matin數(shù)十年軟件開發(fā)和培訓(xùn)經(jīng)驗,Java版曾榮獲計算機圖書最高榮譽——Jolt大獎,是廣受推崇的經(jīng)典著作。自出版以來一直暢銷不衰。 不要被書名誤導(dǎo)了,本書不是那種以開發(fā)過程為主題的敏捷軟件開發(fā)類圖書。在書中,作者延續(xù)了自己一貫的寫作風(fēng)格,讓你親歷現(xiàn)場,并用幽默親切的語言和插圖,通過一步步展示來自開發(fā)一線的代碼,分析各種設(shè)計決策及其得失,以清晰、易于理解的方式講述了真實程序設(shè)計中最基本然而也是最難做到正確應(yīng)用的原則(包括SRP、LSP、OCP、DIP、ISP等類設(shè)計原則,以及多個包設(shè)計原則)與設(shè)計模式(不限于GoF經(jīng)典模式,包括許多作者自己的成果)。 本書不僅是一部深入淺出、生動易懂的面向?qū)ο笤瓌t與設(shè)計模式著作,而且還是一部通俗的敏捷方法導(dǎo)引書和快速實用的UML教程。通過本書你會發(fā)現(xiàn),許多以前看起來非常枯燥費解的概念,忽然間都豁然開朗,變得鮮活生動起來。
內(nèi)容概要
本書中,享譽全球的軟件開發(fā)專家和軟件工程大師Robert C. Martin深入而生動地使用真實案例講解了面向?qū)ο蠡驹瓌t、重要的設(shè)計模式、UML和敏捷實踐等程序員必備的知識?! ”緯?003年榮獲第13屆Jolt大獎,是C++和Java程序員提高自身水平的絕佳教材,也適于用作高校計算機、軟件工程專業(yè)相關(guān)課程的教材或參考書。
作者簡介
Robert C.Martin(“Bob大叔”)世界級的軟件開發(fā)大師,著名軟件咨詢公司Object Mento,公司的創(chuàng)始人和總裁。曾經(jīng)擔任C++Report雜志主編多年,也是設(shè)計模式和敏捷開發(fā)運動的主要倡導(dǎo)者之一。
書籍目錄
第一部分 敏捷開發(fā)第1章 敏捷實踐1.1 敏捷聯(lián)盟1.1.1 人和交互重于過程和工具1.1.2 可以工作的軟件重于面面俱到的文檔1.1.3 客戶合作重于合同談判1.1.4 隨時應(yīng)對變化重于遵循計劃1.2 原則1.3 結(jié)論1.4 參考文獻第2章 極限編程概述2.1 極限編程實踐2.1.1 完整團隊2.1.2 用戶故事2.1.3 短交付周期2.1.4 驗收測試2.1.5 結(jié)對編程2.1.6 測試驅(qū)動開發(fā)2.1.7 集體所有權(quán)2.1.8 持續(xù)集成2.1.9 可持續(xù)的開發(fā)速度2.1.10 開放的工作空間2.1.11 計劃游戲2.1.12 簡單設(shè)計2.1.13 重構(gòu)2.1.14 隱喻2.2 結(jié)論2.3 參考文獻第3章 計劃3.1 初始探索3.2 發(fā)布計劃3.3 迭代計劃3.4 定義“完成”3.5 任務(wù)計劃3.6 迭代3.7 跟蹤3.8 結(jié)論3.9 參考文獻第4章 測試4.1 測試驅(qū)動開發(fā)4.1.1 測試優(yōu)先設(shè)計的例子4.1.2 測試促使模塊之間隔離4.1.3 意外獲得的解耦合4.2 驗收測試4.3 意外獲得的構(gòu)架4.4 結(jié)論4.5 參考文獻第5章 重構(gòu)5.1 素數(shù)產(chǎn)生程序:一個簡單的重構(gòu)示例5.1.1 單元測試5.1.2 重構(gòu)5.1.3 最后審視5.2 結(jié)論5.3 參考文獻第6章 一次編程實踐6.1 保齡球比賽6.2 結(jié)論第二部分 敏捷設(shè)計第7章 什么是敏捷設(shè)計7.1 設(shè)計臭味7.1.1 設(shè)計臭味——腐化軟件的氣味7.1.2 僵化性7.1.3 脆弱性7.1.4 頑固性7.1.5 粘滯性7.1.6 不必要的復(fù)雜性7.1.7 不必要的重復(fù)7.1.8 晦澀性7.2 軟件為何會腐化7.3 Copy程序7.3.1 熟悉的場景7.3.2 Copy程序的敏捷設(shè)計7.4 結(jié)論7.5 參考文獻第8章 SRP:單一職責(zé)原則8.1 定義職責(zé)8.2 分離耦合的職責(zé)8.3 持久化8.4 結(jié)論8.5 參考文獻第9章 OCP:開放-封閉原則9.1 OCP概述9.2 Shape應(yīng)用程序9.2.1 違反OCP9.2.2 遵循OCP9.2.3 預(yù)測變化和“貼切的”結(jié)構(gòu)9.2.4 放置吊鉤9.2.5 使用抽象獲得顯式封閉9.2.6 使用“數(shù)據(jù)驅(qū)動”的方法獲取封閉性9.3 結(jié)論9.4 參考文獻第10章 LSP:Liskov替換原則10.1 違反LSP的情形10.1.1 簡單例子10.1.2 更微妙的違反情形10.1.3 實際的例子10.2 用提取公共部分的方法代替繼承10.3 啟發(fā)式規(guī)則和習(xí)慣用法10.4 結(jié)論10.5 參考文獻第11章 DIP:依賴倒置原則11.1 層次化11.1.1 倒置的接口所有權(quán)11.1.2 依賴于抽象11.2 簡單的DIP示例11.3 熔爐示例11.4 結(jié)論11.5 參考文獻第12章 ISP:接口隔離原則12.1 接口污染12.2 分離客戶就是分離接口12.3 類接口與對象接口12.3.1 使用委托分離接口12.3.2 使用多重繼承分離接口12.4 ATM用戶界面的例子12.5 結(jié)論12.6 參考文獻第13章 C#程序員UML概觀13.1 類圖13.2 對象圖13.3 順序圖13.4 協(xié)作圖13.5 狀態(tài)圖13.6 結(jié)論13.7 參考文獻第14章 使用UML14.1 為什么建模14.1.1 為什么構(gòu)建軟件模型14.1.2 編碼前應(yīng)該構(gòu)建面面俱到的設(shè)計嗎14.2 有效使用UML14.2.1 與他人交流14.2.2 脈絡(luò)圖14.2.3 項目結(jié)束文檔14.2.4 要保留的和要丟棄的14.3 迭代式改進14.3.1 行為優(yōu)先14.3.2 檢查結(jié)構(gòu)14.3.3 想象代碼14.3.4 圖的演化14.4 何時以及如何繪制圖示14.4.1 何時要畫圖,何時不要畫圖14.4.2 CASE 工具14.4.3 那么,文檔呢14.5 結(jié)論第15章 狀態(tài)圖15.1 基礎(chǔ)知識15.1.1 特定事件15.1.2 超狀態(tài)15.1.3 初始偽狀態(tài)和結(jié)束偽狀態(tài)15.2 使用FSM圖示15.3 結(jié)論第16章 對象圖16.1 即時快照16.2 主動對象16.3 結(jié)論第17章 用例17.1 編寫用例17.1.1 備選流程17.1.2 其他東西呢17.2 用例圖17.3 結(jié)論17.4 參考文獻第18章 順序圖18.1 基礎(chǔ)知識18.1.1 對象、生命線、消息及其他18.1.2 創(chuàng)建和析構(gòu)18.1.3 簡單循環(huán)18.1.4 時機和場合18.2 高級概念18.2.1 循環(huán)和條件18.2.2 耗費時間的消息18.2.3 異步消息18.2.4 多線程18.2.5 主動對象18.2.6 向接口發(fā)送消息18.3 結(jié)論第19章 類圖19.1 基礎(chǔ)知識19.1.1 類19.1.2 關(guān)聯(lián)19.1.3 繼承19.2 類圖示例19.3 細節(jié)19.3.1 類衍型19.3.2 抽象類19.3.3 屬性19.3.4 聚集19.3.5 組合19.3.6 多重性19.3.7 關(guān)聯(lián)衍型19.3.8 內(nèi)嵌類19.3.9 關(guān)聯(lián)類19.3.10 關(guān)聯(lián)修飾符19.4 結(jié)論19.5 參考文獻第20章 咖啡的啟示20.1 Mark IV型專用咖啡機20.1.1 規(guī)格說明書20.1.2 常見的丑陋方案20.1.3 虛構(gòu)的抽象20.1.4 改進方案20.1.5 實現(xiàn)抽象模型20.1.6 這個設(shè)計的好處20.2 面向?qū)ο筮^度設(shè)計20.3 參考文獻第三部分 薪水支付案例研究第21章 COMMAND模式和ACTIVE OBJECT模式:多功能與多任務(wù)21.1 簡單的Command21.2 事務(wù)21.2.1 實體上解耦和時間上解耦21.2.2 時間上解耦21.3 Undo()方法21.4 ACTIVE OBJECT模式21.5 結(jié)論21.6 參考文獻第22章 TEMPLATE METHOD模式和STRATEGY模式:繼承和委托22.1 TEMPLATE METHOD模式22.1.1 濫用模式22.1.2 冒泡排序22.2 STRATEGY模式22.3 結(jié)論22.4 參考文獻第23章 FACADE模式和MEDIATOR模式23.1 FACADE模式23.2 MEDIATOR模式23.3 結(jié)論23.4 參考文獻第24章 SINGLETON模式和MONOSTATE模式24.1 SINGLETON模式24.1.1 SINGLETON模式的好處24.1.2 SINGLETON模式的代價24.1.3 運用SINGLETON模式24.2 MONOSTATE模式24.2.1 MONOSTATE模式的好處24.2.2 MONOSTATE模式的代價24.2.3 運用MONOSTATE模式24.3 結(jié)論24.4 參考文獻第25章 NULL OBJECT模式25.1 描述25.2 結(jié)論25.3 參考文獻第26章 薪水支付案例研究:第一次迭代開始26.1 初步的規(guī)格說明26.2 基于用例分析26.2.1 增加新雇員26.2.2 刪除雇員26.2.3 登記考勤卡26.2.4 登記銷售憑條26.2.5 登記工會服務(wù)費26.2.6 更改雇員明細26.2.7 發(fā)薪日26.3 反思:找出底層的抽象26.3.1 雇員支付類別抽象26.3.2 支付時間表抽象26.3.3 支付方式26.3.4 從屬關(guān)系26.4 結(jié)論26.5 參考文獻第27章 薪水支付案例研究:實現(xiàn)27.1 事務(wù)27.1.1 增加雇員27.1.2 刪除雇員27.1.3 考勤卡、銷售憑條以及服務(wù)費用27.1.4 更改雇員屬性27.1.5 犯了什么暈27.1.6 支付雇員薪水27.1.7 支付領(lǐng)月薪的雇員薪水27.1.8 支付鐘點工薪水27.2 主程序27.3 數(shù)據(jù)庫27.4 結(jié)論27.5 關(guān)于本章27.6 參考文獻第四部分 打包薪水支付系統(tǒng)第28章 包和組件的設(shè)計原則28.1 包和組件28.2 組件的內(nèi)聚性原則:粒度28.2.1 重用—發(fā)布等價原則28.2.2 共同重用原則28.2.3 共同封閉原則28.2.4 組件內(nèi)聚性總結(jié)28.3 組件的耦合性原則:穩(wěn)定性28.3.1 無環(huán)依賴原則28.3.2 穩(wěn)定依賴原則28.3.3 穩(wěn)定抽象原則28.4 結(jié)論第29章 FACTORY模式29.1 依賴問題29.2 靜態(tài)類型與動態(tài)類型29.3 可替換的工廠29.4 對測試支架使用對象工廠29.5 工廠的重要性29.6 結(jié)論29.7 參考文獻第30章 薪水支付案例研究:包分析30.1 組件結(jié)構(gòu)和符號30.2 應(yīng)用CCP30.3 應(yīng)用REP30.4 耦合和封裝30.5 度量30.6 度量薪水支付應(yīng)用程序30.6.1 對象工廠30.6.2 重新思考內(nèi)聚的邊界30.7 最終的包結(jié)構(gòu)30.8 結(jié)論30.9 參考文獻第31章 COMPOSITE模式31.1 組合命令31.2 多重性還是非多重性31.3 結(jié)論第32章 OBSERVER——演化至模式32.1 數(shù)字時鐘32.2 OBSERVER模式32.2.1 模型32.2.2 面向?qū)ο笤O(shè)計原則的運用32.3 結(jié)論32.4 參考文獻第33章 ABSTRACT SERVER模式、 ADAPTER模式和BRIDGE模式33.1 ABSTRACT SERVER模式33.2 ADAPTER模式33.2.1 類形式的ADAPTER模式33.2.2 調(diào)制解調(diào)器問題、適配器以及LSP33.3 BRIDGE模式33.4 結(jié)論33.5 參考文獻第34章 PROXY模式和GATEWAY模式:管理第三方API34.1 PROXY模式34.1.1 實現(xiàn)PROXY模式34.1.2 小結(jié)34.2 數(shù)據(jù)庫、中間件以及其他第三方接口34.3 TABLE DATA GATEWAY34.3.1 測試和內(nèi)存TDG34.3.2 測試DbGateWay34.4 可以用于數(shù)據(jù)庫的其他模式34.5 結(jié)論34.6 參考文獻第35章 VISITOR模式35.1 VISITOR模式35.2 ACYCLIC VISITOR模式35.3 DECORATOR模式35.4 EXTENSION OBJECT模式35.5 結(jié)論35.6 參考文獻第36章 STATE模式36.1 嵌套switch/case語句36.1.1 內(nèi)部作用域的狀態(tài)變量36.1.2 測試動作36.1.3 代價和收益36.2 遷移表36.2.1 使用表解釋36.2.2 代價和收益36.3 STATE模式36.3.1 STATE模式和 STRATEGY模式36.3.2 代價和收益36.4 狀態(tài)機編譯器36.4.1 SMC生成的Turnstile.cs以及其他支持文件36.4.2 代價和收益36.5 狀態(tài)機應(yīng)用的場合36.5.1 作為GUI中的高層應(yīng)用策略36.5.2 GUI交互控制器36.5.3 分布式處理36.6 結(jié)論36.7 參考文獻第37章 薪水支付案例研究:數(shù)據(jù)庫37.1 構(gòu)建數(shù)據(jù)庫37.2 一個代碼設(shè)計缺陷37.3 增加雇員37.4 事務(wù)37.5 加載Employee對象37.6 還有什么工作第38章 薪水支付系統(tǒng)用戶界面:Model-View-Presenter38.1 界面38.2 實現(xiàn)38.3 構(gòu)建窗口38.4 Payroll窗口38.5 真面目38.6 結(jié)論38.7 參考文獻附錄A 雙公司記Rufus公司:“日落”項目Rupert工業(yè)公司:“朝暉”項目附錄B 什么是軟件索引
編輯推薦
軟件開發(fā)的不朽經(jīng)典;生動闡述面向?qū)ο笤瓌t、敏捷實踐、UML和模式;大量C#實戰(zhàn)示例,讓你親歷現(xiàn)場?! 拔易钕矏鄣募夹g(shù)作家Robert Martin善于通過實踐展示技術(shù),讓讀者能夠以自己喜歡的方式逐步理解……請把Bob大叔當作你在敏捷世界里的導(dǎo)師?!薄 狢hris Sells,.NET資深技術(shù)專家。微軟“軟件傳奇人物” “本書是對敏捷編程和敏捷原則最全面和最有價值的介紹……絕對是所有.NET程序員必讀之作?!薄 狫esse Liberty,微軟資深技術(shù)專家,Programming C#作者 要想成為一名優(yōu)秀的軟件開發(fā)人員,需要熟練應(yīng)用編程語言和開發(fā)工具,更重要的是能夠領(lǐng)悟優(yōu)美代碼背后的原則和前人總結(jié)的經(jīng)驗——這正是本書的主題。本書凝聚了世界級軟件開發(fā)大師Robert C.Martin數(shù)十年軟件開發(fā)和培訓(xùn)經(jīng)驗。Java版曾榮獲計算機圖書最高榮譽——Jolt大獎。是廣受推崇的經(jīng)典著作,自出版以來一直暢銷不衰?! 〔灰粫`導(dǎo)了。本書不是那種以開發(fā)過程為主題的敏捷軟件開發(fā)類圖書。在書中,作者延續(xù)了自己一貫的寫作風(fēng)格。讓你親歷現(xiàn)場,并用幽默親切的語言和插圖.通過一步步展示來自開發(fā)一線的代碼,分析各種設(shè)計決策及其得失,以清晰、易于理解的方式講述了真實程序設(shè)計中最基本然而也是最難做到正確應(yīng)用的原則(包括SRP、LSP、OCP、DIP、ISP等類設(shè)計原則,以及多個包設(shè)計原則)與設(shè)計模式(不限于GoF經(jīng)典模式。包括許多作者自己的成果)?! ”緯粌H是一部深入淺出、生動易懂的面向?qū)ο笤瓌t與設(shè)計模式著作。而且還是一部通俗的敏捷方法導(dǎo)引書和快速實用的LJML教程。通過本書你會發(fā)現(xiàn),許多以前看起來非常枯燥費解的概念,忽然間都豁然開朗。變得鮮活生動起來?! #版與此前的Java版相比,主要的更新包括加強了UML的介紹章節(jié)。使其更加貼近實戰(zhàn);增加了對MVP模式的介紹等。
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載