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

重構(gòu)(Ruby版)

重構(gòu)(Ruby版)

定 價:¥49.00

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

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

內(nèi)容簡介

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

作者簡介

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

圖書目錄

譯者序

前言
致謝
第1章 重構(gòu)初體驗
1.1 起點
1.1.1 Movie
1.1.2 Rental
1.1.3 Customer
1.1.4 對起始程序的評價
1.2 重構(gòu)第一步
1.3 Statement方法的分解和再組合
1.3.1 移動Amount的計算
1.3.2 提煉??头e分的計算
1.3.3 移除臨時變量
1.4 用多態(tài)替換價格代碼中的條件邏輯
1.5 小結(jié)
第2章 重構(gòu)的基本原理
2.1 重構(gòu)的起源
2.2 重構(gòu)的定義
2.3 重構(gòu)的理由
2.3.1 重構(gòu)可以改進(jìn)軟件的設(shè)計
2.3.2 重構(gòu)讓軟件變得易于理解
2.3.3 重構(gòu)可以幫助你發(fā)現(xiàn)bug
2.3.4 重構(gòu)可以幫助你更快地編程
2.4 重構(gòu)的時機
2.4.1 事不過三
2.4.2 在添加功能時重構(gòu)
2.4.3 在需要修復(fù)bug時重構(gòu)
2.4.4 在進(jìn)行代碼復(fù)審時重構(gòu)
2.4.5 為了更好地理解而重構(gòu)(或者說,向著同一個目標(biāo)進(jìn)行重構(gòu))
2.5 為什么重構(gòu)能起作用
2.6 我怎么跟經(jīng)理說
2.7 抽象和重構(gòu)
2.8 重構(gòu)的問題
2.8.1 改變接口
2.8.2 數(shù)據(jù)庫
2.8.3 難以重構(gòu)的設(shè)計變化
2.8.4 什么時候不應(yīng)該重構(gòu)
2.9 重構(gòu)和設(shè)計
2.10 竹籃打水一場空
2.11 重構(gòu)和性能
2.12 優(yōu)化薪資系統(tǒng)
第3章 代碼里的壞味道
3.1 重復(fù)代碼
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 不斷重復(fù)的樣板文本
第4章 構(gòu)建測試
4.1 自我測試代碼的價值
4.2 Test∷Unit測試框架
4.3 程序員測試和質(zhì)量保證測試
4.4 添加更多的測試
第5章 重構(gòu)花名冊
5.1 重構(gòu)的格式
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 使用鏈?zhǔn)秸{(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 引入類標(biāo)注
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 移除未使用的默認(rèn)參數(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 示例:用類標(biāo)注來定義實例方法
6.17.6 示例:通過擴展一個動態(tài)定義的模塊來定義方法
6.18 使用動態(tài)方法定義替換動態(tài)接收器
6.18.1 動機
6.18.2 手法
6.18.3 示例:不用method_missing進(jìn)行動態(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進(jìn)行重構(gòu)
8.6 使用對象替換Hash
8.6.1 動機
8.6.2 手法
8.6.3 示例
8.7 將單向關(guān)聯(lián)改為雙向關(guān)聯(lián)
8.7.1 動機
8.7.2 手法
8.7.3 示例
8.8 將雙向關(guān)聯(lián)改為單向關(guā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章 簡化條件表達(dá)式
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 合并條件表達(dá)式
9.3.1 動機
9.3.2 手法
9.3.3 示例:Ors
9.3.4 示例:Ands
9.4 合并重復(fù)的條件片段
9.4.1 動機
9.4.2 手法
9.4.3 示例
9.5 移除控制位
9.5.1 動機
9.5.2 手法
9.5.3 示例:使用break替換簡單的控制位
9.5.4 示例:返回控制位的結(jié)果
9.6 使用守衛(wèi)子句替換嵌套條件語句
……
第10章 簡化方法調(diào)用
第11章 處理通用化
第12章 大型重構(gòu)
第13章 總結(jié)
參考文獻(xiàn)
重構(gòu)手法列表

本目錄推薦

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