注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡軟件與程序設計其他編程語言/工具重構(Ruby版)

重構(Ruby版)

重構(Ruby版)

定 價:¥49.00

作 者: (美)菲爾德斯 等著,徐旭銘 譯
出版社: 機械工業(yè)出版社
叢編項: 開發(fā)人員專業(yè)技術叢書
標 簽: 程序設計

ISBN: 9787111300786 出版時間: 2010-04-01 包裝: 平裝
開本: 16開 頁數(shù): 294 字數(shù):  

內(nèi)容簡介

  本書是一本專門為職業(yè)Ruby程序員編寫的重構指導。它的目標是向你展示如何以一種既受到嚴格控制又高效的方式進行重構。你將學習到不在代碼中引入bug并能按部就班改進結構的重構方式。本書的主要內(nèi)容:第1章指出重構是什么;第2章討論進行重構的理由;第3章指出需要進行重構的信號;第4章討論測試在重構中扮演的重要角色;第5章~第12章介紹了重構花名冊,它包含了在重構領域里到目前為止的成果。當需要進行某項任務時,這份花名冊可以手把手地提醒我們安全的做法。本書是對Martin Fowler的經(jīng)典權威著作《重構》的重大更新版,并以Ruby為例徹底重寫——并非只是把代碼從Java版中搬過來而已。書中給出了一份詳細的重構花名冊,包含超過70條經(jīng)過錘煉的Ruby重構技術,每一條都有詳細指引、使用細節(jié)和范例代碼。其中很多重構技術都用到了Ruby專有的強大特性,你可以從華章網(wǎng)站下載到全部代碼。作者借用Fowler最初的想法,展示了如何以一種受控、高效以及迭代的方式進行重構,幫助你有條不紊地改善代碼的質(zhì)量而不會引入新的bug。不論是編寫還是維護Ruby代碼,本書都將是不可或缺的重要參考。本書內(nèi)容理解重構的核心原則,以及進行重構的原因發(fā)現(xiàn)Ruby代碼中的“壞味道”逐步將糟糕的設計轉變成設計精良的代碼構建測試以便保證重構正確進行理解重構中的難點以及克服的辦法編寫正確包裝代碼的方法在對象之間移動特性,將其放在最適合的地方將數(shù)據(jù)組織成更容易處理的形式簡化條件表達式,更高效地利用多態(tài)創(chuàng)建更易于理解和使用的接口進行大型重構,這將可能影響整個軟件系統(tǒng)數(shù)月乃至數(shù)年成功重構Ruby on Rails代碼

作者簡介

  Jay Fields 是DRW Trading公司的一名軟件程序員,也是一位研討會的???。Jay對發(fā)現(xiàn)和成熟化創(chuàng)新式解決方案總是抱有激情。Shane Harvie 在美國、印度和澳大利亞等國的敏捷公司中從事軟件開發(fā)工作。他現(xiàn)在位于芝加哥的DRW Trading公司工作。Martin Fowler 是ThoughtWorks公司的首席科學家,他是一位作家、演說家和咨詢師,經(jīng)常在軟件開發(fā)活動中發(fā)表演講。他關注的是企業(yè)軟件設計——諸如什么能產(chǎn)生良好的設計,而良好的設計,而良好的設計有需要哪些實踐等。他是面向對象技術、重構、模式、敏捷方法論、領域建模、統(tǒng)一建模語言(UML)和極限編程的先行者。近十年來他一直在ThoughtWorks公司工作,這是一家非常出色的系統(tǒng)開發(fā)赫咨詢公司。

圖書目錄

譯者序

前言
致謝
第1章 重構初體驗
1.1 起點
1.1.1 Movie
1.1.2 Rental
1.1.3 Customer
1.1.4 對起始程序的評價
1.2 重構第一步
1.3 Statement方法的分解和再組合
1.3.1 移動Amount的計算
1.3.2 提煉??头e分的計算
1.3.3 移除臨時變量
1.4 用多態(tài)替換價格代碼中的條件邏輯
1.5 小結
第2章 重構的基本原理
2.1 重構的起源
2.2 重構的定義
2.3 重構的理由
2.3.1 重構可以改進軟件的設計
2.3.2 重構讓軟件變得易于理解
2.3.3 重構可以幫助你發(fā)現(xiàn)bug
2.3.4 重構可以幫助你更快地編程
2.4 重構的時機
2.4.1 事不過三
2.4.2 在添加功能時重構
2.4.3 在需要修復bug時重構
2.4.4 在進行代碼復審時重構
2.4.5 為了更好地理解而重構(或者說,向著同一個目標進行重構)
2.5 為什么重構能起作用
2.6 我怎么跟經(jīng)理說
2.7 抽象和重構
2.8 重構的問題
2.8.1 改變接口
2.8.2 數(shù)據(jù)庫
2.8.3 難以重構的設計變化
2.8.4 什么時候不應該重構
2.9 重構和設計
2.10 竹籃打水一場空
2.11 重構和性能
2.12 優(yōu)化薪資系統(tǒng)
第3章 代碼里的壞味道
3.1 重復代碼
3.2 方法過長
3.3 類太大
3.4 參數(shù)列表太長
3.5 發(fā)散型變化
3.6 霰彈型修改
3.7 特性依賴
3.8 數(shù)據(jù)泥團
3.9 基本類型偏執(zhí)
3.10 case語句
3.11 平行繼承體系
3.12 冗贅類
3.13 純臆測的泛化
3.14 臨時字段
3.15 消息鏈
3.16 中間人
3.17 過分親密
3.18 異曲同工的類
3.19 不完善的類庫
3.20 數(shù)據(jù)類
3.21 被拒絕的遺贈
3.22 注釋
3.23 狂熱的元編程
3.24 脫節(jié)的API
3.25 不斷重復的樣板文本
第4章 構建測試
4.1 自我測試代碼的價值
4.2 Test∷Unit測試框架
4.3 程序員測試和質(zhì)量保證測試
4.4 添加更多的測試
第5章 重構花名冊
5.1 重構的格式
5.2 查找引用
第6章 組織方法
6.1 提煉方法
6.1.1 動機
6.1.2 手法
6.1.3 示例:沒有局部變量
6.1.4 示例:使用局部變量
6.1.5 示例:重新給局部變量賦值
6.2 內(nèi)聯(lián)化方法
6.2.1 動機
6.2.2 手法
6.3 內(nèi)聯(lián)化臨時變量
6.3.1 動機
6.3.2 手法
6.4 使用查詢替換臨時變量
6.4.1 動機
6.4.2 手法
6.4.3 示例
6.5 使用鏈式調(diào)用替換臨時變量
6.5.1 動機
6.5.2 手法
6.5.3 示例
6.6 引入解釋性變量
6.6.1 動機
6.6.2 手法
6.6.3 示例
6.6.4 采用提煉方法的手法
6.7 分解臨時變量
6.7.1 動機
6.7.2 手法
6.7.3 示例
6.8 移除對參數(shù)賦值
6.8.1 動機
6.8.2 手法
6.8.3 示例
6.9 使用方法對象替換方法
6.9.1 動機
6.9.2 手法
6.9.3示例
6.10 替換算法
6.10.1 動機
6.10.2 手法
6.11 使用集合閉包方法替換循環(huán)
6.11.1 動機
6.11.2 手法
6.11.3 示例
6.12 提煉環(huán)繞方法
6.12.1 動機
6.12.2 手法
6.12.3 示例
6.13 引入類標注
6.13.1 動機
6.13.2 手法
6.13.3 示例
6.14 引入命名參數(shù)
6.14.1 動機
6.14.2 手法
6.14.3 示例1:命名全部參數(shù)
6.14.4 示例2:只命名可選參數(shù)
6.15 移除命名參數(shù)
6.15.1 動機
6.15.2 手法
6.15.3 示例
6.16 移除未使用的默認參數(shù)
6.16.1 動機
6.16.2 手法
6.16.3 示例
6.17 動態(tài)方法定義
6.17.1 動機
6.17.2 手法
6.17.3 示例:通過def_each來定義相似的方法
6.17.4 instance_exec方法
6.17.5 示例:用類標注來定義實例方法
6.17.6 示例:通過擴展一個動態(tài)定義的模塊來定義方法
6.18 使用動態(tài)方法定義替換動態(tài)接收器
6.18.1 動機
6.18.2 手法
6.18.3 示例:不用method_missing進行動態(tài)委托
6.18.4 示例:使用自定義數(shù)據(jù)來定義方法
6.19 隔離動態(tài)接收器
6.19.1 動機
6.19.2 手法
6.19.3 示例
6.20 把計算從運行時移到解析時
6.20.1 動機
6.20.2 手法
第7章 在對象之間移動特性
7.1 移動方法
7.1.1 動機
7.1.2 手法
7.1.3 示例
7.2 移動字段
7.2.1 動機
7.2.2 手法
7.2.3 示例
7.2.4 示例:使用自封裝
7.3 提煉類
7.3.1 動機
7.3.2 手法
7.3.3 示例
7.4 內(nèi)聯(lián)化類
7.4.1 動機
7.4.2 手法
7.4.3 示例
7.5 隱藏委托
7.5.1 動機
7.5.2 手法
7.5.3 示例
7.6 移除中間人
7.6.1 動機
7.6.2 手法
7.6.3 示例
第8章 組織數(shù)據(jù)
8.1 自封裝字段
8.1.1 動機
8.1.2 手法
8.1.3 示例
8.2 使用對象替換數(shù)據(jù)值
8.2.1 動機
8.2.2 手法
8.2.3 示例
8.3 將值對象改為引用對象
8.3.1 動機
8.3.2 手法
8.3.3 示例
8.4 將引用對象改為值對象
8.4.1 動機
8.4.2 手法
8.4.3 示例
8.5 使用對象替換數(shù)組
8.5.1 動機
8.5.2 手法
8.5.3 示例
8.5.4 使用Deprecation進行重構
8.6 使用對象替換Hash
8.6.1 動機
8.6.2 手法
8.6.3 示例
8.7 將單向關聯(lián)改為雙向關聯(lián)
8.7.1 動機
8.7.2 手法
8.7.3 示例
8.8 將雙向關聯(lián)改為單向關聯(lián)
8.8.1 動機
8.8.2 手法
8.8.3 示例
8.9 使用符號常數(shù)代替魔法數(shù)
8.9.1 動機
8.9.2 手法
8.10 封裝集合
8.10.1 動機
8.10.2 手法
8.10.3 示例
8.10.4 將行為移入類里
8.11 使用數(shù)據(jù)類替換記錄
8.11.1 動機
8.11.2 手法
8.12 使用多態(tài)替換類型碼
8.12.1 動機
8.12.2 移除條件邏輯
8.12.3 手法
8.12.4 示例
8.13 使用模塊擴展替換類型碼
8.13.1 動機
8.13.2 手法
8.13.3 示例
8.14 使用狀態(tài)或策略模式替換類型碼
8.14.1 動機
8.14.2 手法
8.14.3 示例
8.15 使用字段替換子類
8.15.1 動機
8.15.2 手法
8.15.3 示例
8.16 惰性初始化的屬性
8.16.1 動機
8.16.2 手法
8.16.3 以II=為例
8.16.4 以instance-variable_defined?為例
8.17 及早初始化的屬性
8.17.1 動機
8.17.2 討論
8.17.3 手法
8.17.4 示例
第9章 簡化條件表達式
9.1 分解條件語句
9.1.1 動機
9.1.2 手法
9.1.3 示例
9.2 重組條件語句
9.2.1 動機
9.2.2 示例:使用“0r”賦值替換=三元操作符
9.2.3 示例:使用顯式返回替換條件語句
9.3 合并條件表達式
9.3.1 動機
9.3.2 手法
9.3.3 示例:Ors
9.3.4 示例:Ands
9.4 合并重復的條件片段
9.4.1 動機
9.4.2 手法
9.4.3 示例
9.5 移除控制位
9.5.1 動機
9.5.2 手法
9.5.3 示例:使用break替換簡單的控制位
9.5.4 示例:返回控制位的結果
9.6 使用守衛(wèi)子句替換嵌套條件語句
……
第10章 簡化方法調(diào)用
第11章 處理通用化
第12章 大型重構
第13章 總結
參考文獻
重構手法列表

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) www.dappsexplained.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號