1. 程式人生 > >重構-改善既有程式碼的設計中文版 pdf下載

重構-改善既有程式碼的設計中文版 pdf下載

縱覽武俠江湖,制勝法門不外兩項,內功和外功。二者得一可天下去得,但最終皆入內外兼修之境
倚天是自內而外,先修內功九陽真經,然後以此為基礎,加上太極拳和太極劍,最終成就天下第一高手
笑傲是自外而內,先學獨孤九劍,後學吸星大法,最後學易筋經。
神鵰也不外如是,玉女心經算是外功,內功則是獨孤求敗之法門。
只修內不修外,好比萬貫家財而不知用,張無忌也要得傳太極方可天下去得。
只修外不修內,終是一場空。令狐沖身懷獨孤九劍,在義救向問天時幾乎丟掉性命。

需要學習的朋友可以通過網盤免費下載pdf版 (先點選普通下載-----再選擇普通使用者就能免費下載了)http://putpan.com/fs/cy6i5b4efn2sah0u9/


重構,一言以蔽之,就是在不改變外部行為的前提下,有條不紊地改善程式碼。多年前,正是本書原版的出版,使重構終於從程式設計高手們的小圈子走出,成為眾多普通程式設計師日常開發工作中不可或缺的一部分。本書也因此成為與《設計模式》齊名的經典著作,被譯為中、德、俄、日等眾多語言,在世界範圍內暢銷不衰。

本書凝聚了軟體開發社群專家多年摸索而獲得的寶貴經驗,擁有不因時光流逝而磨滅的價值。今天,無論是重構本身,業界對重構的理解,還是開發工具對重構的支援力度,都與本書最初出版時不可同日而語,但書中所蘊涵的意味和精華,依然值得反覆咀嚼,而且往往能夠常讀常新。

作者簡介  · · · · · ·

Martin Fowler 世界軟體開發大師,在面向物件分析設計、UML、模式、XP和重構等領域都有卓越貢獻,現為著名軟體開發諮詢公司ThoughtWorks的首席科學家。他的多部著作《分析模式》、《UML精粹》和《企業應用架構模式》等都已經成為膾炙人口的經典。

其他參編者——

Kent Beck 軟體開發方法學的泰斗,極限程式設計的創始人。他是Three Rivers Institute公司總裁,也是Agitar Software的成員。

John Brant和Don Roberts The Refactory公司的創始人,Refactoring Browser (http://st-www.cs.illinois.edu/users/brant/Refactory/)的開發者,多年來一直從事研究重構的實踐與理論。

William Opdyke 目前在朗訊貝爾實驗室工作,他寫的關於面向物件框架的博士論文是重構方面的第一篇著名文章。

目錄  · · · · · ·

第1章 重構,第一個案例1
1.1 起點1
1.2 重構的第一步7
1.3 分解並重組statement()8
1.4 運用多型取代與價格相關的條件邏輯34
1.5 結語52
第2章 重構原則53
2.1 何謂重構53
2.2 為何重構55
2.3 何時重構57
2.4 怎麼對經理說60
2.5 重構的難題62
2.6 重構與設計66
2.7 重構與效能69
2.8 重構起源何處71
第3章 程式碼的壞味道75
3.1 DuplicatedCode(重複程式碼)76
3.2 LongMethod(過長函式)76
3.3 LargeClass(過大的類)78
3.4 LongParameterList(過長引數列)78
3.5 DivergentChange(發散式變化)79
3.6 ShotgunSurgery(霰彈式修改)80
3.7 FeatureEnvy(依戀情結)80
3.8 DataClumps(資料泥團)81
3.9 PrimitiveObsession(基本型別偏執)81
3.10 SwitchStatements(switch驚悚現身)82
3.11 ParallelInheritanceHierarchies(平行繼承體系)83
3.12 LazyClass(冗贅類)83
3.13 SpeculativeGenerality(誇誇其談未來性)83
3.14 TemporaryField(令人迷惑的暫時欄位)84
3.15 MessageChains(過度耦合的訊息鏈)84
3.16 MiddleMan(中間人)85
3.17 InappropriateIntimacy(狎暱關係)85
3.18 AlternativeClasseswithDifferentInterfaces(異曲同工的類)85
3.19 IncompleteLibraryClass(不完美的庫類)86
3.20 DataClass(純稚的資料類)86
3.21 RefusedBequest(被拒絕的遺贈)87
3.22 Comments(過多的註釋)87
第4章 構築測試體系89
4.1 自測試程式碼的價值89
4.2 JUnit測試框架91
4.3 新增更多測試97
第5章 重構列表103
5.1 重構的記錄格式103
5.2 尋找引用點105
5.3 這些重構手法有多成熟106
第6章 重新組織函式109
6.1 ExtractMethod(提煉函式)110
6.2 InlineMethod(行內函數)117
6.3 InlineTemp(內聯臨時變數)119
6.4 ReplaceTempwithQuery(以查詢取代臨時變數)120
6.5 IntroduceExplainingVariable(引入解釋性變數)124
6.6 SplitTemporaryVariable(分解臨時變數)128
6.7 RemoveAssignmentstoParameters(移除對引數的賦值)131
6.8 ReplaceMethodwithMethodObject(以函式物件取代函式)135
6.9 SubstituteAlgorithm(替換演算法)139
第7章 在物件之間搬移特性141
7.1 MoveMethod(搬移函式)142
7.2 MoveField(搬移欄位)146
7.3 ExtractClass(提煉類)149
7.4 InlineClass(將類內聯化)154
7.5 HideDelegate(隱藏“委託關係”)157
7.6 RemoveMiddleMan(移除中間人)160
7.7 IntroduceForeignMethod(引入外加函式)162
7.8 IntroduceLocalExtension(引入本地擴充套件)164
第8章 重新組織資料169
8.1 SelfEncapsulateField(自封裝欄位)171
8.2 ReplaceDataValuewithObject(以物件取代資料值)175
8.3 ChangeValuetoReference(將值物件改為引用物件)179
8.4 ChangeReferencetoValue(將引用物件改為值物件)183
8.5 ReplaceArraywithObject(以物件取代陣列)186
8.6 DuplicateObservedData(複製“被監視資料”)189
8.7 ChangeUnidirectionalAssociationtoBidirectional(將單向關聯改為雙向關聯)197
8.8 ChangeBidirectionalAssociationtoUnidirectional(將雙向關聯改為單向關聯)200
8.9 ReplaceMagicNumberwithSymbolicConstant(以字面常量取代魔法數)204
8.10 EncapsulateField(封裝欄位)206
8.11 EncapsulateCollection(封裝集合)208
8.12 ReplaceRecordwithDataClass(以資料類取代記錄)217
8.13 ReplaceTypeCodewithClass(以類取代型別碼)218
8.14 ReplaceTypeCodewithSubclasses(以子類取代型別碼)223
8.15 ReplaceTypeCodewithState/Strategy(以State/Strategy取代型別碼)227
8.16 ReplaceSubclasswithFields(以欄位取代子類)232
第9章 簡化條件表示式237
9.1 DecomposeConditional(分解條件表示式)238
9.2 ConsolidateConditionalExpression(合併條件表示式)240
9.3 ConsolidateDuplicateConditionalFragments(合併重複的條件片段)243
9.4 RemoveControlFlag(移除控制標記)245
9.5 ReplaceNestedConditionalwithGuardClauses(以衛語句取代巢狀條件表示式)250
9.6 ReplaceConditionalwithPolymorphism(以多型取代條件表示式)255
9.7 IntroduceNullObject(引入Null物件)260
9.8 IntroduceAssertion(引入斷言)267
第10章 簡化函式呼叫271
10.1 RenameMethod(函式改名)273
10.2 AddParameter(新增引數)275
10.3 RemoveParameter(移除引數)277
10.4 SeparateQueryfromModifier(將查詢函式和修改函式分離)279
10.5 ParameterizeMethod(令函式攜帶引數)283
10.6 ReplaceParameterwithExplicitMethods(以明確函式取代引數)285
10.7 PreserveWholeObject(保持物件完整)288
10.8 ReplaceParameterwithMethods(以函式取代引數)292
10.9 IntroduceParameterObject(引入引數物件)295
10.10 RemoveSettingMethod(移除設值函式)300
10.11 HideMethod(隱藏函式)303
10.12 ReplaceConstructorwithFactoryMethod(以工廠函式取代建構函式)304
10.13 EncapsulateDowncast(封裝向下轉型)308
10.14 ReplaceErrorCodewithException(以異常取代錯誤碼)310
10.15 ReplaceExceptionwithTest(以測試取代異常)315
第11章 處理概括關係319
11.1 PullUpField(欄位上移)320
11.2 PullUpMethod(函式上移)322
11.3 PullUpConstructorBody(建構函式本體上移)325
11.4 PushDownMethod(函式下移)328
11.5 PushDownField(欄位下移)329
11.6 ExtractSubclass(提煉子類)330
……
第12章 大型重構359
第13章 重構,複用與現實379
第14章 重構工具401
第15章 總結409
參考書目413
要點列表417
索引419

需要IT程式設計經典書籍資源大合集百度網盤連結的加qq 3083709327,另本人願意有償帶小白學python,幫助你答疑解惑,幫助你解決問題,指導你找工作,帶你入行。相信我有人帶著你的話可以少走彎路,成功入行拿高薪。北京地區週六日可上門指導,非北京線上指導。本人前每日優鮮後端工程師,土木專業自學python成功轉行,月薪5位數,性格安靜,誠信正直,想學的加qq。

另閒聊的也可加,就當交個朋友吧!