我的新書《大話重構》終於要出來啦!這是一本講咱程式設計師應該怎樣開發高質量**的書,它用大量精彩的故事,講解高質量的**是怎樣一步一步開發出來,其設計的過程、心理的歷程、遇到的問題、解決的思路……
這是一本解惑的書,它通過故事向你闡述許多深邃難懂的設計難題;這又是一本故事會,它將那些枯燥的技術問題通過故事娓娓道來。它讓你告別游擊隊轉變為正規軍,遠離劣質**走向精妙設計,真正明白專業級的軟體開發是怎樣的,真正明白重構是怎樣一步一步進行的。
你也許會問,設計高質量的**跟重構有什麼關係呢?為什麼你一邊在談高質量的**設計,一邊又在談重構?其實我們一直在談高質量的**,它已經成為許多人的夢想,但似乎總是距離這個夢想十分遙遠。在《大話重構》這本書裡,我為大家找到了一條通往這個夢想的最佳途徑,那就是重構。通過書中講解的重構方法,大大降低了設計難度,使你輕輕鬆鬆就可以開始高質量的軟體設計。為此,我提出了高效重構七步曲,面對實踐不卡殼。
然而,此時的你也許並不是在開發乙個新系統,而是在維護一套遺留系統。遺留系統!讓人頭大的名詞。沒有關係,本書讓遺留系統維護不再是你的夢魘,它讓你迅速讀懂**、正確地做出設計、一步步改善系統,讓你最終可以喝著咖啡、哼著小曲,輕鬆地享受程式設計生活。
最後,當你讀完本書,你會發現:
需求變更不再糾結,重構讓你潤物細無聲地容納它們;
超越**級的重構,讓你從各個層面深度領略重構之美;
自動化測試不再是夢想,重構讓自動化測試走你;
重新審視熟悉而陌生的技術,將碎了一地的它們重新鉚合在一起
大家可以在噹噹、亞馬遜、京東、china-pub等網上書店搜尋,也可以在豆瓣、51cto、it168文庫等網上試讀。
噹噹:試讀:
本書的目錄:
遺留系統——軟體工業時代的痛 1
第一部分基礎篇 3
重構,乙個既熟悉又陌生的名詞。在這裡,我首先給你詮釋乙個完全不同的重構,讓你重新理解乙個最熟悉的陌生技術:
第1章重構:改變既有**的一劑良藥 3
1.1什麼是系統重構 3
1.2在保險索上走鋼絲 4
1.3大布局與小步快跑 5
1.4軟體修改的四種動機 6
1.5乙個真實的謊言 8
第2章重構方法工具箱 9
2.1重構是一系列的等量變換——第一次helloworld重構 9
2.2盤點我們的重構工具箱——對helloworld抽取類和介面 12
第3章小步快跑的開發模式 17
3.1大布局你傷不起 17
3.2小設計而不是大布局 18
3.3小步快跑是這樣玩的——helloworld重構完成 19
第4章保險索下的系統重構 26
4.1你不能沒有保險索 26
4.2自動化測試——想說愛你不容易 28
4.3我們是這樣自動化測試的——junit下的helloworldtest 29
4.4採用mock技術完成測試 32
第二部分實踐篇 37
當你充滿激情地準備實踐重構時,卻發現自己在邁出第一步就卡殼了,有木有?高效可行的重構七步,讓你面對實踐不卡殼:
第5章第一步:從分解大函式開始 37
5.1超級大函式——軟體退化的重災區 37
5.2抽取方法的實踐 43
5.3最常見的問題 45
第6章第二步:拆分大物件 47
6.1大物件的演化過程 47
6.2大物件的拆分過程——抽取類與職責驅動設計 49
6.3srp原則與物件拆分 50
6.4合久必分,分久必合——類的歸併 52
第7章第三步:提高**復用率 54
7.1順序程式設計的煩惱 54
7.2**重複與dry原則 55
7.3提高**復用的方法 56
7.3.1當重複**存在於同一物件中時——抽取方法
7.3.2當重複**存在於不同物件中時——抽取類
7.3.3不同物件中復用**的另一種方法——封裝成實體類
7.3.4當**所在的類具有某種並列關係時——抽取父類
7.3.5當出現繼承氾濫時——將繼承轉換為組合
7.3.6當重複**被割裂成碎片時——繼承結合模板模式
7.4**重複的檢查工具 64
第8章第四步:發現程式可擴充套件點 64
8.1開放-封閉原則(ocp)與可擴充套件點設計 65
8.2過程的擴充套件與放置鉤子——運用模板模式增加可擴充套件點 68
8.3面向切面的可擴充套件設計 71
8.4其它可擴充套件設計 74
第9章第五步:降低程式依賴度 78
9.1介面、實現與工廠模式 79
9.1.1徹底理解工廠模式和依賴反轉原則
9.1.2工廠模式在重構中的實際運用
9.2外部介面與介面卡模式——與外部系統解耦 84
9.3繼承的氾濫與橋接模式 87
9.4方法的解耦與策略模式 90
9.5過程的解耦與命令模式 93
9.6透明的功能擴充套件與設計——組合模式與裝飾者模式 95
第10章第六步:我們開始分層了 102
10.1什麼才是我們需要的分層 102
10.2怎樣才能擁抱需求的變化 104
10.3貧血模型與充血模型 108
10.4我們怎樣面對技術的變革 111
第11章一次完整的重構過程 113
11.1第一步:分解大函式 113
11.2第二步:拆分大物件 115
11.3第三步:提高復用率 116
11.4第四步:發現擴充套件點 117
11.5第五步:降低依賴度 119
11.6第六步:分層 120
11.7第七步:領域驅動設計 121
第三部分高階篇 123
我已經是乙個重構的實踐者了,但重構真的讓我想說愛你不容易,太多太多的難題讓我困惑讓我煩惱。這裡,讓乙個重構多年的實踐者給你解惑吧:
第12章什麼時候重構 123
12.1重構是一種習慣 123
12.2重構讓程式可讀 125
12.3重構,才好復用 126
12.4先重構,再擴充套件 127
12.5變更任務緊急時,又該如何重構 129
第13章測試驅動開發 131
13.1測試驅動開發(tdd) vs. 後測試開發(tad) 131
13.2測試驅動開發與重構 134
13.3遺留系統怎樣開展tdd 142
第14章全面的公升級任務 144
14.1計畫式設計vs演進式設計 144
14.2風險驅動設計 146
14.3制定系統重構計畫 148
第15章我們怎樣擁抱變化 149
15.1領域才是軟體系統的「心」——工資軟體的三次設計演變 149
15.2領域模型分析方法 155
15.3原文分析法 157
15.4領域驅動設計——使用領域模型與客戶一起設計 160
15.5在遺留系統中的應用 164
第16章測試的困境 166
16.1重構初期的困局 167
16.2解耦與自動化測試 168
16.3誰來寫自動化測試程式? 171
16.4建立自動化測試體系 174
第17章系統重構的評價 175
17.1評價軟體質量的指標 175
17.2怎樣評價軟體質量呢 178
結束語:重構改變了世界 181
附錄:重構方法速查手冊 182
出來混還是要還的
蔣宇東劉未鵬 徐宥 我沒有完全把 我是乙隻 it小小鳥 看完,20多個人中我只看了一半感興趣的。不同的人從事的不一樣,做的不一樣。蔣宇東說出了一般計算機學院有目標有遠見的人的心生。劉未鵬大二就有了 boost 原始碼剖析。徐宥的書架。出來混還是要還的,沒有下功夫學的東西,以後肯定會遇到而且要在這方面...
出來混,遲早要還的
這句話可以說是經典到家了。所有的人都是這句話的奴隸,出來混的方式有多種,所以還的方式也有多種。歸咎到一點,那就是不管是誰,出來混,遲早是要還的。可能是別人還你,也可能是你還給別人,總之,出來混的代價,就是如此。也許更多的人不能理解為什麼要還,那是因為更多的人都在混。一還一報,理所當然。這就是為什麼出...
出來混,總是要還的
曼聯主場3 2勝,仍然被淘汰了。11年前 依靠索爾斯克亞和謝林漢姆的進球 讓曼聯從地獄到了天堂,讓已經開始慶祝的拜仁球迷,從天堂到了地域。同樣是歐冠,只是這次不是決賽。上半場,拉斐爾是裡貝里的地獄,下半場裡貝里把曼聯拉入了地獄 拜仁主客場的4個球都是在後面的時段進的,足以證明它的成熟。在讓裡貝里鬱悶...