編輯推薦
《麵嚮對象設計實踐指南:Ruby語言描述》一本直接關注Ruby語言麵嚮對象應用程序設計的書籍。對“如何編寫更易維護、更易管理、更討人喜愛,以及功能更為強大的Ruby應用程序”的全麵指導。
任何層次的Ruby程序員都能從中汲取有用的知識:初級的Ruby程序員將會找到賴以生存的特定準則,中等水平的Ruby程序員將會找到多條可以根據需要靈活地詮釋和應用的有價值的原則,高水平的Ruby程序員則會找到一種共同語言,用以引導開發和指導同事。
內容簡介
《麵嚮對象設計實踐指南:Ruby語言描述》是對“如何編寫更易維護、更易管理、更討人喜愛且功能更為強大的Ruby應用程序”的全麵指導。為幫助讀者解決Ruby代碼難以更改和不易擴展的問題,作者在書中運用瞭多種功能強大和實用的麵嚮對象設計技術,並藉助大量簡單實用的Ruby示例對這些技術進行全麵解釋。
全書共9章,主要包含的內容有:如何使用麵嚮對象編程技術編寫更易於維護和擴展的Ruby代碼,單個Ruby類所應包含的內容,避免將應該保持獨立的對象交織在一起,在多個對象之間定義靈活的接口,利用鴨子類型減少編程間接成本,閤理運用繼承,通過組閤構建對象,設計齣劃算的測試,解決不良設計的Ruby代碼所導緻的常見問題等。
《麵嚮對象設計實踐指南:Ruby語言描述》適閤所有對麵嚮對象設計和Ruby編程語言感興趣的程序員閱讀參考。
作者簡介
Sandi Metz,在處理經曆不斷變化仍然存活的項目方麵,Sandi Metz擁有30年的工作經驗。作為杜剋大學的一名軟件架構師,她每天都堅持編寫代碼。在杜剋大學裏,她的團隊不斷地為許多客戶解決大量實際問題。其中,有些客戶的應用程序不僅具有規模大和麵嚮對象的特點,而且已演變瞭15年之久。她全身心投入的工作是用簡單實用的方法將有用的軟件提取齣來。Sandi在Ruby Nation做過演講,在Gotham Ruby用戶大會上也演講過多次。本書是她做過的關於OO設計的談話匯集之後的必然成果。
譯者簡介
張雪平,西南石油大學畢業,模式識彆與智能係統專業,碩士研究生。擁有多年高校計算機相關課程的教學經驗,熱衷於計算機應用軟件的開發與研究。現從事石油行業相關軟件的研發工作。
彭曉東,西南師範大學畢業,計算機科學與技術專業。10餘年來,一直從事高校計算機網絡管理、軟件開發及教學工作。
內頁插圖
精彩書評
“這是一部厲害的作品!其描述如此生動活潑,讓我再一次發現埋藏在OO原則之下的真相。這些真相都藏匿很深,以緻我也忘記瞭去探究它們。作者的設計思維和對未來的認識尤其具有說服力。”
——Ian McFarland,New Context有限公司總裁
“對於一名自學成纔的程序員來說,這是一本對鑽研某些OOP概念非常有用的書籍。我顯然也需要對那些概念更加熟悉纔行。我並不孤獨,在工作的時候,總會有這樣一種提示在腦中不斷地閃現:‘Sandi Metz會怎麼做呢?’”
——Jonathan Mukai,Pivotal in NYC
“作者以一絲不苟的務實態度與細膩清晰的錶達方式,將那些令人難以捉摸的知識呈現給瞭迫切需要它的讀者。這些解決之道既可作為新手的準則,也可當作有經驗專業人士的指導。”
——Katrina Owen,Bengler開發人員
“我相信這是2012年重要的一本Ruby書籍。不僅因為作者100%抓住瞭要點,而且她還采用瞭輕鬆的寫作風格,並大量使用類比,讓每一個要點都淺顯易懂。”
——Avdi Grimm,Exceptional Ruby and Objects on Rails作者
目錄
第1章 麵嚮對象設計
1.1 設計贊歌
1.1.1 設計解決的問題
1.1.2 為何難以更改
1.1.3 實用的設計定義
1.2 設計工具
1.2.1 設計原則
1.2.2 設計模式
1.3 設計行為
1.3.1 設計失敗
1.3.2 設計時機
1.3.3 設計評
1.4 麵嚮對象編程簡介
1.4.1 過程式語言
1.4.2 麵嚮對象語言
1.5 小結
第2章 設計具有單一職責的類
2.1 決定類的內容
2.1.1 將方法分組成類
2.1.2 組織代碼以便於更改
2.2 創建具有單一職責的類
2.2.1 示例程序:自行車和齒輪
2.2.2 為何單一職責原則很重要
2.2.3 確定一個類是否具有單一職責
2.2.4 確定何時做齣設計決策
2.3 編寫擁抱變化的代碼
2.3.1 要依賴行為,不依賴數據
2.3.2 全麵推行單一職責原則
2.4 最後是真實的輪子需求
2.5 小結
第3章 管理依賴關係
3.1 理解依賴關係
3.1.1 認識依賴關係
3.1.2 對象間的耦閤
3.1.3 其他依賴關係
3.2 編寫鬆耦閤的代碼
3.2.1 注入依賴關係
3.2.2 隔離依賴關係
3.2.3 移除參數順序依賴關係
3.3 管理依賴方嚮
3.3.1 反轉依賴關係
3.3.2 選擇依賴方嚮
3.4 小結
第4章 創建靈活的接口
4.1 理解接口
4.2 定義接口
4.2.1 公共接口
4.2.2 私有接口
4.2.3 職責、依賴關係和接口
4.3 找齣公共接口
4.3.1 示例程序:自行車旅遊公司
4.3.2 構建意圖
4.3.3 使用時序圖
4.3.4 請詢問"要什麼",彆告知"如何做"
4.3.5 尋求上下文獨立
4.3.6 信任其他對象
4.3.7 使用消息來發現對象
4.3.8 創建基於消息的應用程序
4.4 編寫能展現其(內在)最好麵的代碼
4.4.1 創建顯式接口
4.4.2 善用其他類的公共接口
4.4.3 避免依賴私有接口
4.4.4 最小化上下文
4.5 迪米特法則
4.5.1 定義迪米特法則
4.5.2 違規的後果
4.5.3 避免違規
4.5.4 聽從迪米特法則
4.6 小結
第5章 使用鴨子類型技術降低成本
5.1 理解鴨子類型
5.1.1 鴨子類型概述
5.1.2 讓問題復雜些
5.1.3 發現鴨子類型
5.1.4 鴨子類型的後果
5.2 編寫依賴於鴨子類型的代碼
5.2.1 識彆齣隱藏的鴨子類型
5.2.2 信任你的鴨子類型
5.2.3 記錄好鴨子類型
5.2.4 在鴨子類型之間共享代碼
5.2.5 閤理選擇鴨子類型
5.3 剋服對鴨子類型的恐懼
5.3.1 使用靜態類型顛覆鴨子類型
5.3.2 靜態類型與動態類型
5.3.3 擁抱動態類型
5.4 小結
第6章 通過繼承獲得行為
6.1 理解經典的繼承
6.2 弄清使用繼承的地方
6.2.1 從一個具體類開始
6.2.2 嵌入多種類型
6.2.3 找齣嵌入的類型
6.2.4 選擇繼承
6.2.5 描繪齣繼承關係
6.3 誤用繼承
6.4 找齣抽象
6.4.1 創建抽象父類
6.4.2 提升抽象行為
6.4.3 從具體分離齣抽象
6.4.4 使用模闆方法模式
6.4.5 實現所有模闆方法
6.5 管理父類與子類之間的耦閤
6.5.1 理解耦閤
6.5.2 使用鈎子消息解耦子類
6.6 小結
第7章 使用模塊共享角色行為
7.1 理解角色
7.1.1 找齣角色
7.1.2 組織職責
7.1.3 刪除不必要的依賴關係
7.1.4 編寫具體代碼
7.1.5 提取抽象
7.1.6 查找方法
7.1.7 繼承角色行為
7.2 編寫可繼承的代碼
7.2.1 識彆齣反模式
7.2.2 堅持抽象
7.2.3 重視契約
7.2.4 使用模闆方法模式
7.2.5 預先將類解耦
7.2.6 創建淺層結構
7.3 小結
第8章 組閤對象
8.1 Parts組閤成Bicycle
8.1.1 更新Bicycle類
8.1.2 創建Parts層次結構
8.2 組閤成Parts對象
8.2.1 創建Part
8.2.2 讓Parts對象更像一個數組
8.3 製造Parts
8.3.1 創建PartsFactory
8.3.2 藉助PartsFactory
8.4 組閤成Bicycle
8.5 繼承和組閤的抉擇
8.5.1 接受繼承帶來的後果
8.5.2 接受組閤帶來的後果
8.5.3 選擇關係
8.6 小結
第9章 設計最劃算的測試
9.1 意圖測試
9.1.1 瞭解測試的意圖
9.1.2 瞭解測試的內容
9.1.3 瞭解測試的時機
9.1.4 瞭解測試的方法
9.2 測試輸入消息
9.2.1 刪除未使用的接口
9.2.2 證明公共接口
9.2.3 隔離測試對象
9.2.4 注入使用類的依賴關係
9.2.5 將依賴關係注入成角色
9.3 測試私有方法
9.3.1 在測試過程中忽略私有方法
9.3.2 從測試類裏移除私有方法
9.3.3 選擇測試私有方法
9.4 測試輸齣消息
9.4.1 忽略查詢消息
9.4.2 證明命令消息
9.5 測試鴨子類型
9.5.1 測試角色
9.5.2 用角色測試驗證測試替身
9.6 測試繼承代碼
9.6.1 指定繼承接口
9.6.2 指定子類責任
9.6.3 測試獨特行為
9.7 小結
後記
前言/序言
麵嚮對象設計實踐指南:Ruby語言描述 epub pdf mobi txt 電子書 下載 2024
麵嚮對象設計實踐指南:Ruby語言描述 下載 epub mobi pdf txt 電子書
評分
☆☆☆☆☆
書不錯的 書不錯的 書不錯的
評分
☆☆☆☆☆
——Katrina Owen,Bengler開發人員
評分
☆☆☆☆☆
——Avdi Grimm,Exceptional Ruby and Objects on Rails作者
評分
☆☆☆☆☆
評分
☆☆☆☆☆
——Ian McFarland,New Context有限公司總裁
評分
☆☆☆☆☆
——Avdi Grimm,Exceptional Ruby and Objects on Rails作者
評分
☆☆☆☆☆
任何層次的Ruby程序員都能從中汲取有用的知識:初級的Ruby程序員將會找到賴以生存的特定準則,中等水平的Ruby程序員將會找到多條可以根據需要靈活地詮釋和應用的有價值的原則,高水平的Ruby程序員則會找到一種共同語言,用以引導開發和指導同事。
評分
☆☆☆☆☆
評分
☆☆☆☆☆