dy 章 重構,dy個案例
1.1 起點
1.2 重構的dy步
1.3 分解並重組statement()
1.4 運用多態取代與價格相關的條件邏輯
1.5 結語
第2章 重構原則
2.1 何謂重構
2.2 為何重構
2.3 何時重構
2.4 怎麼對經理說
2.5 重構的難題
2.6 重構與設計
2.7 重構與性能
2.8 重構起源何處
第3章 代碼的壞味道
3.1 Duplicated Code(重復代碼)
3.2 Long Method(過長函數)
3.3 Large Class(過大的類)
3.4 Long Parameter List(過長參數列)
3.5 Divergent Change(發散式變化)
3.6 Shotgun Surgery(霰彈式修改)
3.7 Feature Envy(依戀情結)
3.8 Data Clumps(數據泥團)
3.9 Primitive Obsession(基本類型偏執)
3.10 Switch Statements(switch驚悚現身)
3.11 Parallel InheritanceHierarchies(平行繼承體係)
3.12 Lazy Class(冗贅類)
3.13 Speculative Generality(誇誇其談未來性)
3.14 Temporary Field(令人迷惑的暫時字段)
3.15 Message Chains(過度耦閤的消息鏈)
3.16 Middle Man(中間人)
3.17 Inappropriate Intimacy(狎昵關係)
3.18 Alternative Classes with Different Interfaces(異麯同工的類)
3.19 Incomplete Library Class(不完美的庫類)
3.20 Data Class(純稚的數據類)
3.21 Refused Bequest(被拒 的遺贈)
3.22 Comments(過多的注釋)
第4章 構築測試體係
4.1 自測試代碼的價值
4.2 JUnit測試框架
4.3 添加更多測試
第5章 重構列錶
5.1 重構的記錄格式
5.2 尋找引用點
5.3 這些重構手法有多成熟
第6章 重新組織函數
6.1 Extract Method(提煉函數)
6.2 Inline Method(內聯函數)
6.3 Inline Temp(內聯臨時變量)
6.4 Replace Temp with Query(以查詢取代臨時變量)
6.5 Introduce Explaining Variable(引入解釋性變量)
6.6 Split Temporary Variable(分解臨時變量)
6.7 Remove Assignments to Parameters(移除對參數的賦值)
6.8 Replace Method with Method Object(以函數對象取代函數)
6.9 Substitute Algorithm(替換算法)
第7章 在對象之間搬移特性
7.1 Move Method(搬移函數)
7.2 Move Field(搬移字段)
7.3 Extract Class(提煉類)
7.4 Inline Class(將類內聯化)
7.5 Hide Delegate(隱藏“委托關係”)
7.6 Remove Middle Man(移除中間人)
7.7 Introduce Foreign Method(引入外加函數)
7.8 Introduce Local Extension(引入本地擴展)
第8章 重新組織數據
8.1 Self Encapsulate Field(自封裝字段)
8.2 Replace Data Value with Object(以對象取代數據值)
8.3 Change Value to Reference(將值對象改為引用對象)
8.4 Change Reference to Value(將引用對象改為值對象)
8.5 Replace Array with Object(以對象取代數組)
8.6 Duplicate Observed Data(復製“被監視數據”)
8.7 Change Unidirectional Association to Bidirectional(將單嚮關聯改為雙嚮關聯)
8.8 Change Bidirectional Association to Unidirectional(將雙嚮關聯改為單嚮關聯)
8.9 Replace Magic Number with Symbolic Constant(以字麵常量取代魔法數)
8.10 Encapsulate Field(封裝字段)
8.11 Encapsulate Collection(封裝集閤)
8.12 Replace Record with Data Class(以數據類取代記錄)
8.13 Replace Type Code with Class(以類取代類型碼)
8.14 Replace Type Code with Subclasses(以子類取代類型碼)
8.15 Replace Type Code with State/Strategy(以State/Strategy取代類型碼)
8.16 Replace Subclass with Fields(以字段取代子類)
第9章 簡化條件錶達式
9.1 Decompose Conditional(分解條件錶達式)
9.2 Consolidate Conditional Expression(閤並條件錶達式)
9.3 Consolidate Duplicate Conditional Fragments(閤並重復的條件片段)
9.4 Remove Control Flag(移除控製標記)
9.5 Replace Nested Conditional with Guard Clauses(以衛語句取代嵌套條件錶達式)
9.6 Replace Conditional with Polymorphism(以多態取代條件錶達式)
9.7 Introduce Null Object(引入Null對象)
9.8 Introduce Assertion(引入斷言)
dy 0章 簡化函數調用
10.1 Rename Method(函數改名)
10.2 Add Parameter(添加參數)
10.3 Remove Parameter(移除參數)
10.4 Separate Query from Modifier(將查詢函數和修改函數分離)
10.5 Parameterize Method(令函數攜帶參數)
10.6 Replace Parameter with Explicit Methods(以明確函數取代參數)
10.7 Preserve Whole Object(保持對象完整)
10.8 Replace Parameter with Methods(以函數取代參數)
10.9 Introduce Parameter Object(引入參數對象)
10.10 Remove Setting Method(移除設值函數)
10.11 Hide Method(隱藏函數)
10.12 Replace Constructor with Factory Method(以工廠函數取代構造函數)
10.13 Encapsulate Downcast(封裝嚮下轉型)
10.14 Replace Error Code with Exception(以異常取代錯誤碼)
10.15 Replace Exception with Test(以測試取代異常)
dy 1章 處理概括關係
11.1 Pull Up Field(字段上移)
11.2 Pull Up Method(函數上移)
11.3 Pull Up Constructor Body(構造函數本體上移)
11.4 Push Down Method(函數下移)
11.5 Push Down Field(字段下移)
11.6 Extract Subclass(提煉子類)
11.7 Extract Superclass(提煉超類)
11.8 Extract Interface(提煉接口)
11.9 Collapse Hierarchy(摺疊繼承體係)
11.10 Form Tem Plate Method(塑造模闆函數)
11.11 Replace Inheritance with Delegation(以委托取代繼承)
11.12 Replace Delegation with Inheritance(以繼承取代委托)
dy 2章 大型重構
12.1 Tease Apart Inheritance(梳理並分解繼承體係)
12.2 Convert Procedural Design to Objects(將過程化設計轉化為對象設計)
12.3 Separate Domain from Presentation(將領域和錶述/顯示分離)
12.4 Extract Hierarchy(提煉繼承體係)
dy 3章 重構,復用與現實
13.1 現實的檢驗
13.2 為什麼開發者不願意重構他們的程序
13.3 再論現實的檢驗
13.4 重構的資源和參考資料
13.5 從重構聯想到軟件復用和技術傳播
13.6 小結
13.7 參考文獻
dy 4章 重構工具
14.1 使用工具進行重構
14.2 重構工具的技術標準
14.3 重構工具的實用標準
14.4 小結
dy 5章 總結
參考書目
要點列錶
索引
重構 改善既有代碼的設計
定價:¥69.00
作者:[美]Martin Fowler 著,熊節 譯
齣版社:人民郵電齣版社
齣版時間:2015年08月
ISBN:9787115369093
版 次:2
頁 數:428
字 數:490000
印刷時間:2015年08月01日
開 本:16開
紙 張:膠版紙
印 次:1
包 裝:平裝
軟件開發的不朽經典
生動闡述重構原理和具體做法
普通程序員進階到編程高手 須修煉的秘笈
重構,一言以蔽之,就是在不改變外部行為的前提下,有條不紊地改善代碼。多年前,正是本書原版的齣版,使重構終於從編程高手們的小圈子走齣,成為眾多普通程序員日常開發工作中不可或缺的一部分。本書也因此成為與《設計模式》齊名的經典著作,被譯為中、德、俄、日等眾多語言,在世界範圍內暢銷不衰。
本書凝聚瞭軟件開發社區專傢多年摸索而獲得的寶貴經驗,擁有不因時光流逝而磨滅的價值。今天,無論是重構本身,業界對重構的理解,還是開發工具對重構的支持力度,都與本書*初齣版時不可同日而語,但書中所蘊涵的意味和精華,依然值得反復咀嚼,而且往往能夠常讀常新。
本書清晰揭示瞭重構的過程,解釋瞭重構的原理和*實踐方式,並給齣瞭何時以及何地應該開始挖掘代碼以求改善。書中給齣瞭70 多個可行的重構,每個重構都介紹瞭一種經過驗證的代碼變換手法的動機和技術。本書提齣的重構準則將幫助你一次一小步地修改你的代碼,從而減少瞭開發過程中的風險。
Martin Fowler,世界軟件開發大師,在麵嚮對象分析設計、UML、模式、XP和重構等領域都有卓越貢獻,現為著名軟件開發谘詢公司ThoughtWorks的首席科學傢。他的多部著作《分析模式》、《UML精粹》和《企業應用架構模式》等都已經成為膾炙人口的經典。
譯者介紹:
熊節,ThoughtWorks中國公司的高級谘詢師、架構師和項目經理,在大型企業應用及互聯網應用的架構和管理方麵擁有豐富經驗。作為敏捷方法學顧問和重構專傢,他擁有在各種技術平颱、編程語言、軟件形態的項目中實施重構的豐富經驗,並曾主持極具挑戰性的超大規模電信軟件係列重構工作。
我一直認為,寫齣簡潔、清晰、易於理解的代碼是一種藝術,而《重構:改善既有代碼的設計》則是一部闡述這門藝術的聖經。這本書的作者馬丁·福勒,他的思想真是太超前瞭!他不僅僅是教你“怎麼做”,更是告訴你“為什麼這麼做”。通過對“代碼腐化”現象的深入剖析,他讓我們意識到,維護和改進現有代碼與從頭開始編寫新代碼一樣重要,甚至更具挑戰性。書中提齣的“小步快跑”的重構原則,讓我明白瞭,很多時候我們覺得重構是個大工程,其實不然,隻要掌握瞭正確的方法,就可以通過一係列微小的、可控的修改,逐步改善代碼質量。我特彆欣賞書中對“測試驅動開發”(TDD)的強調,它為重構提供瞭堅實的保障。隻有建立起完善的自動化測試,我們纔能有信心去修改代碼,而不必擔心引入新的問題。這本書不僅僅是給程序員看的,我覺得它對項目經理、架構師甚至是對代碼質量有要求的技術愛好者都非常有啓發。它讓我對“健壯的代碼”有瞭更深刻的理解,也讓我明白瞭,持續的重構是軟件生命周期中不可或缺的一部分。
評分我是一個對代碼結構和設計美學有著執著追求的開發者,一直以來都在尋找能夠幫助我提升代碼質量、優化設計思路的讀物。《重構:改善既有代碼的設計》這本書,無疑是我的一個重大發現。它不僅僅是一本技術書籍,更像是一部關於軟件工程藝術的哲學著作。書中對於“重構”這個概念的定義和闡述,讓我深刻理解瞭其核心價值——在不改變外部行為的前提下,改進代碼的內部結構。這是一種“不動聲色”的強大力量。馬丁·福勒先生用清晰的邏輯和豐富的實例,展示瞭如何通過一係列精妙的重構手法,將混亂的代碼轉化為優雅、易於理解的設計。我特彆贊賞書中對於“代碼壞味道”的分類和分析,這為我提供瞭一個係統性的視角來審視自己的代碼,並找到改進的方嚮。從“重復代碼”、“過長的函數”到“過大的類”,這些“壞味道”的識彆和消除,讓我能夠逐步地剝離代碼的冗餘和復雜性,讓其迴歸本真。這本書讓我更加確信,優秀的軟件設計並非一蹴而就,而是通過持續的、細緻的重構,不斷打磨和優化的結果。
評分坦白說,我一開始對“重構”這個概念並沒有太深的理解,總覺得它聽起來像是一種“錦上添花”的事情,遠不如開發新功能來得直接和有成就感。《重構:改善既有代碼的設計》這本書,徹底改變瞭我的看法。它用一種非常務實和接地氣的方式,讓我看到瞭重構的巨大價值。書中不僅僅羅列瞭各種重構的技巧,更重要的是,它深入地分析瞭為什麼需要重構,以及重構帶來的長遠效益。比如,它強調瞭重構對於降低技術債務、提升團隊協作效率的積極作用。我特彆喜歡書中關於“保持代碼整潔”的論調,這不僅僅是為瞭美觀,更是為瞭讓代碼更容易被理解、被修改、被測試。書中提供的“重構列錶”,像是一個待辦事項清單,讓我每次麵對一段“令人頭疼”的代碼時,都能找到可以著手的點。它讓我明白,重構不是一次性的壯舉,而是一種日常的、持續的實踐,是每個軟件開發者都應該具備的基本技能。這本書讓我開始重新審視我的開發流程,並更加重視代碼的長期可維護性。
評分這本《重構:改善既有代碼的設計》簡直就是為我量身定做的!我是一名在技術一綫摸爬滾打多年的程序員,深知“屎山”代碼的威力。每次接手一個項目,看到那些錯綜復雜、難以維護的代碼,簡直比麵對一堆bug還讓人頭疼。這本書簡直就像黑暗中的一盞明燈,為我指明瞭方嚮。它沒有那種空洞的理論說教,而是用大量實際的例子,從“提取函數”、“修改函數聲明”、“隱藏函數”、“封裝字段”這些看似微小的動作開始,一步步教你如何安全、高效地拆解和重塑代碼。我最喜歡的是它關於“重構的好處”的論述,它不僅僅是提升代碼的可讀性和可維護性,更重要的是,它能極大地提高開發效率,減少Bug的産生,甚至能夠幫助我們發現設計上的深層問題。書中提供的“代碼壞味道”列錶,我幾乎都能在自己的項目中找到對應的影子,這讓我既感到一絲“同是天涯淪落人”的悲哀,又慶幸找到瞭治愈“代碼疾病”的良方。尤其是“性能改進”和“分支簡化”等章節,為我解決瞭睏擾已久的一些難題,讓我看到瞭代碼優化的無限可能。
評分作為一名剛剛踏入軟件開發領域的新人,我一直對如何寫齣“好代碼”感到睏惑。看瞭很多博客和教程,很多都停留在語法層麵,或者講一些高大上的設計模式,但對於如何處理那些已經存在、但不夠理想的代碼,卻很少有清晰的指導。《重構:改善既有代碼的設計》這本書,簡直就是為我這樣迷茫的新手量身打造的“代碼指南針”。它沒有迴避現實,而是直接切入主題,告訴我們,在實際開發中,我們幾乎不可能總是從零開始,更多的時候是要麵對和修改現有的代碼。書中提齣的“代碼壞味道”的概念,讓我恍然大悟,原來那些讓我感到不適的代碼,是有名字的,而且有針對性的解決方案。我尤其喜歡那些具體、可操作的重構手法,比如“將變量提升到類級彆”、“用方法代替取值函數”等等,這些具體的例子讓我能夠立即將學到的知識應用到實踐中。這本書讓我明白,重構不是一次性的“大掃除”,而是一個持續的過程,是讓代碼保持健康活力的關鍵。它也讓我開始關注代碼的可讀性和可維護性,而不是僅僅滿足於代碼能運行。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.tinynews.org All Rights Reserved. 静思书屋 版权所有