
作為程式員,要學習很多重要的主題。算法,資料結構,程式設計語言,數不勝數,代碼重構也是其中必備技能之一。
今天小編推薦一本無敵厲害的書,接下來的很長時間你将被這本書刷屏,它将出現在各大暢銷書排行榜内,
這本書就是《重構(第2版)》。它在世界範圍内暢銷不衰,被翻譯為中、德、日、俄等衆多語言。
這本經典書20年後重磅更新,更新内容超30%,更新了衆多項目案例。
想要成為《重構(第2版)》中文版的首批讀者,可以下滑到文末掃碼申請四,我們将從報名的讀者中選出50人,3月11日首批品鑒。同時
京東、
當當 天貓等各大書城已同步預售(點選網店名稱可以直達購買)。
《重構:改善既有代碼的設計(第2版)》作者:馬丁·福勒(Martin Fowler)
01 《重構(第2版)》必讀的四大理由 理由一:不可撼動的江湖地位“重構”這個概念來自Smalltalk圈子,沒多久就進入了其他語言陣營之中。由于重構是架構開發中不可缺少的一部分,是以當架構開發人員讨論自己的工作時,這個術語就誕生了。重構,一言以蔽之,就是在不改變外部行為的前提下,有條不紊地改善代碼。多年前,正是《重構》原版的出版,使重構終于從程式設計高手們的小圈子走出,成為衆多普通程式員日常開發工作中不可或缺的一部分。
本書也是以成為與《設計模式》齊名的經典著作,被譯為中、德、俄、日等衆多語言,在世界範圍内暢銷不衰。《重構》一書自第1版問世至今,讀者的回報甚佳,重構的理念已經被廣泛接納,成為程式設計的詞彙表中不可或缺的部分。然而,對于一本與程式設計相關的書而言,20年己經太漫長,是以作者感到,是時候回頭重新修訂這本書了。
作者幾乎重寫了全書的每一頁,但從其内涵而言,整本書又幾乎沒有改變。重構的精髓仍然一如既往;大部分關鍵的重構手法也大體不變。作者希望這次修訂能幫助更多的讀者學會如何有效地進行重構。
《重構(第2版)》英文版美亞計算機類圖書暢銷榜排名第一,中文版累計發售了11個版本,累計銷售超20萬冊,分别是英文影印版、英文評注版、精裝版、中文簡裝版等。
美亞榜單截圖2月27日
《重構》凝聚了軟體開發社群專家多年摸索而獲得的寶貴經驗,擁有不因時光流逝而磨滅的價值。今天,無論是重構本身,業界對重構的了解,還是開發工具對重構的支援力度,都與本書最初出版時不可同日而語,但書中所蘊涵的意味和精華,依然值得反複咀嚼,而且往往能夠常讀常新。這本書在豆瓣評分高達9.3分。
本書作者馬丁·福勒(Martin Fowler) ,世界軟體開發大師,ThoughtWorks的首席科學家。他是一位作家、演說者、咨詢師和泛軟體開發領域的意見領袖。他緻力于改善企業級的軟體設計,對優秀的設計以及支撐優秀設計的工程實踐孜孜以求。他在重構、面向對象分析設計、模式、XP和UML等領域都有卓越貢獻。
馬丁·福勒(Martin Fowler)馬丁·福勒在英格蘭的沃爾索爾長大,去了瑪麗皇後文法學校。1983年到2006年去了倫敦大學學院,獲得了電子工程和計算機科學的學士學位(ENG)。畢業後他在在Coopers&Lybrand和一家名為Ptech的小型科技公司工作了一段時間,之後于1991年成為獨立顧問。他于1994年搬到馬薩諸塞州繼續擔任獨立顧問,直到2000年加入ThoughtWorks。
在80年代初期開始從事軟體工作,在80年代中期,他開始對
面向對象開發的新世界感興趣。開始專注于将對象引入商業資訊系統,首先是與幾家公司合作,然後作為獨立顧問。在早期,這是使用Smalltalk和C ++,現在它是Java,C#和Ruby。每年他都會學到新東西,同時也發現過去的許多教訓仍然适用。這項工作使他在面向對象分析和設計,UML,模式和靈活開發方法方面發揮了主導作用。“
馬丁·福勒已出版過七本軟體開發方面的經典書籍。2000年3月,他成為ThoughtWorks的首席科學家。福勒同時是靈活聯盟的成員,于2001年,同其他16名合著者一起協助創作了“靈活軟體開發宣言”。
來源于維基百科:https://zh.wikipedia.org/wiki/%E9%A9%AC%E4%B8%81%C2%B7%E7%A6%8F%E5%8B%92
馬丁·福勒在20多年的時間裡完成了多本影響深遠的著作,成為軟體開發行業的裡程碑。耳熟能詳的作品包括《重構》《分析模式》《領域特定語言》等經典著作。
理由三:20年後經典更新,更适合當下重構,一言以蔽之,就是在不改變外部行為的前提下,有條不紊地改善代碼。20 多年前,正是《重構:改善既有代碼的設計》第1 版的出版,使重構終于從程式設計高手們的小圈子走出,成為衆多普通程式員日常開發工作中不可或缺的一部分。如今,Martin Fowler 的《重構:改善既有代碼的設計》一書已經成為全球有經驗的程式員手中的利器,既可用來改善既有代碼的設計、提升軟體的可維護性,又可用于使既有代碼更易了解、煥發出新的活力。
這本備受關注的第2 版在第1 版的基礎上做了全面修訂,反映了程式設計領域業已發生的許多變化。第2版中介紹的重構清單更加内聚,并用JavaScript 語言重寫了代碼範例。此外,第2版中還新增了與函數式程式設計相關的重構範例,旨在教會讀者如何在沒有類的環境下開展重構。
新版沿襲了第1 版的結構,依次解釋什麼是重構,為什麼要重構,如何通過“壞味道”識别出需要重構的代碼,以及如何在實踐中成功實施重構(無論用的是什麼程式設計語言)。
這些變化很細微,但是涉及到方方面面。變化細微是因為書的基本結構沒有改變。書的開篇是一個開放式的例子、一個章節的原則、一個“代碼壞味道”的調查和一個測試的介紹。這本書的主體仍然是重構,原來有68個重構示例,作者保留了其中10個,新增了17個。
雖然書的整體結構變化不大,但是文字的變化卻很多。
每一個章節和重構示例都幾乎是從零開始重寫,作者幾乎沒有複制粘貼舊版中的文字。針對内容更新,作者Martin Fowler曾說:”新版重新調整重心,将重點更少地放在類上。雖然這聽起來可能就像将“提取方法”的名稱更改為“提取函數”一樣簡單,但它确實需要重新思考每個重構的所有方面。我需要重新考慮動機,經常需要重新設計。至少結構需要詳細審查,通常都需要完全重寫。對此我沒有做詳細的記錄,但我覺得引用一個相對簡單的舊的重構,就要重新考慮兩個重構。“
理由四:衆多技術大咖鼎力推薦本書譯者熊節老師,在IT行業已經打拼了18年,在金融、零售、政府、電信、制造業等行業的資訊化建設方面有着豐富經驗,是中國IT業靈活浪潮的領軍人物。本書得到韓磊、霍炬、霍泰穩、蔣濤、劉江、喬梁、徐昊、閻華、餘晟、楊衛華(Tim Yang)、陰明、鄭晔、莊表偉等業内大咖聯袂推薦。
下滑看看他們怎麼說:
過去20年,《重構》一直是我案頭常備的圖書。每次重讀,仍有感悟。對我而言,《重構》的意義不隻在于指導代碼重構,更在于讓人從一開始就知道什麼是好的代碼,并且盡量寫出沒有“壞味道”的代碼。Martin Fowler這次對本書進行的重構,展現了近年來程式設計領域的一些思潮變化。看來,既有設計,永遠有改進空間。
——韓磊,《代碼整潔之道》譯者
重構早就成了軟體開發從業者本能的一部分,每個IDE都内置了重構功能,每個程式員都定期重構自己的代碼。技能上通常不再是問題,但是相對于當年第1版的讀者,現在的程式員對于重構這個思想從何而來以及各種細節反而更陌生,這時候就更值得重新讀一下這本書了。
——霍炬,PRESS.one CTO
有人說Martin Fowler改變了人類開發軟體的模式,這一點也不過分,從《模式分析》《UML精粹》《領域特定語言》,到這本《重構》新版可以看得出來,他的每一本書都是軟體開發人員必備的案頭讀物。此前他參與的“靈活宣言”,更是引領了整個行業對靈活開發的認識,一直到現在。Martin Fowler是我們QCon全球軟體開發大會進入中國時的第一屆講師,也是在那次會議上,他讓國内的技術社群領略了國際領先的開發模式,從此“靈活”二字開始風行國内IT領域。
今年是QCon進入中國的第十個年頭,我特别開心看到Martin Fowler又重寫《重構》這本影響深遠的書,他幾乎完全替換了書中所引用的模式案例,并且基于現在使用者的習慣,采用了JavaScript語言來做說明語言。數十年來他始終保持對技術的關注,對創新的熱情,樂此不疲,這是Martin最令人敬佩的地方,也是非常值得我們每一個技術人學習的地方。
——霍泰穩,極客邦科技、InfoQ中國創始人兼CEO
當今軟體開發的速度越來越快,帶來的技術債也越來越多,我從CSDN自身的網站系統開發中充分認識到重構的重要性——如果我們的程式員能了解和掌握重構的原則和方法,我們的系統就不會有這麼多沉重的債務。真正本質的東西是不變的,《重構》在出版20年後推出了第2版,再次證明:越本質的越長久,也越重要。衷心期待更多的新一代開發者能從這本書吸收營養,開發出好味道的系統。
——蔣濤,CSDN創始人、董事長
最早看到本書第1版的英文原版并決定引進國内,算起來已經是20年前的事了。雖然時間是最強大的重構工具,連書裡的示例語言都從Java變成JavaScript了,但書中的理念和實踐的價值并沒有随時間流逝。這充分證明,即使在日新月異的IT技術世界裡,不變的東西其實還是有的,這種書才是真正的經典,是技術人員應該優先研讀并一讀再讀的。
——劉江,美團技術學院院長
“對于軟體工程師來說,重構,并不是額外的工作,它就是編碼本身。”直到我讀過《重構》,并經過練習,才真正了解到這一點。真希望自己在20多年前寫第一個軟體時,就能讀到這本書,進而能節省出大量調試或重複研究代碼的時間。20年過去了,《重構》這本書也根據目前軟體設計及相關工具的發展進行了一部分修訂,更加貼近目前的軟體開發者。希望更多的軟體工程師能夠應用這一技術節省出更多的時間。
——喬梁,騰訊進階管理顧問、《持續傳遞2.0》作者
重構是一項被低估了的技術能力。說起來,重構就是“不改變外在行為,而提高代碼品質”這麼簡簡單單的一句話,但其帶來的影響卻非常深遠:它使我們在解決問題時可以放心地“先做對,再做好”——這種思路本身就可以極大地簡化問題;它使我們消除無謂的意氣之争——“所謂好,就是更少的壞味道”。我由衷地認為,切實地讀懂了《重構》的程式員,在能力上都會獲得一個數量級的提升。
——徐昊,ThoughtWorks中國區技術總監
當我還是程式設計菜鳥,想寫出漂亮的代碼而不得門道的時候,《重構》這本書就告訴了我,其實高手的代碼也不是一次書就的,隻要按這本書裡的方法去做,誰都能把代碼寫得那麼好;當我還是職場新人,沒來得及寫出太多垃圾代碼的時候,這本書就教會了我,應該去追求編寫人能夠讀懂的而不是僅機器能夠讀懂的代碼。多年以後的某時某刻,當你編碼自信而靈活,因代碼清晰而受人尊重時,你會慶幸讀過這本書,你也會有些遺憾,應該再早一點去讀這本書。無論過去了多少年,這本書,一直值得推薦。
——閻華,京東7FRESH架構師
在大獲成功的《重構》第1版裡,Martin Fowler傳達的核心理念是:代碼會随時間流逝而爛掉。寫得再好的程式代碼,若是釋出了就一直保持原樣,照樣會風化、破碎乃至分崩離析。這是客觀規律,避免這種命運的唯一出路是持續重構。要想成為高素質的軟體工程師,必須認識這一點。
20年之後,Martin Fowler用現身說法證明,經典的《重構》也會變得不合時宜,也需要重構。如今,不但講解語言從Java改成了JavaScript,原來的重構示例也做了很多調整,新增了15個示例,更重要的是,新版示例不再那麼“面向對象”,應當會收獲更廣泛的讀者群。
軟體不死,重構不歇。
——餘晟,《代碼整潔之道:程式員的職業素養》譯者
随着軟體項目日積月累,系統維護成本變得越來越高昂是網際網路團隊共同面臨的問題。使用者在使用網際網路系統的過程中,遇到的各類運作錯誤或者不可通路故障,以及開發團隊面臨的曆史系統不可維護問題,很多時候是代碼初次開發過程中各種細小的不規範引起的。持續優化已有代碼是維護系統生命力最好的方法。《重構》是我推薦團隊必讀的技術圖書之一。
——楊衛華(Tim Yang),微網誌研發副總經理
軟體行業已經高速發展數十年,就好似一個嶄新的城市,從一個個村屋矮房到高樓林立。而你的代碼庫就好比你手下的一個房間、一幢平房、一條街道、一片社群乃至是一座摩天大樓。作為一本經典的軟體開發書籍,《重構》告訴我們的不僅僅是如何推倒重建、清理、裝修,而是像一個規劃師一樣從目的、成本、手段、價值等綜合次元來思考重構的意義。在開發業務的同時,《重構》常伴我左右,警醒我如何寫出更有價值的軟體。
——陰明,掘金社群創始人
重構,是一個優秀程式員的基本功,因為沒人能保證其代碼不随時間腐化,而重構會讓代碼重新煥發活力。整個軟體行業對重構的認知始于Martin Fowler的《重構》,這本書讓人們知道了“代碼的壞味道”,見識到了“小步前行”的威力。時隔20年,Martin Fowler重新執筆改寫《重構》,20年間的思維變遷就展現在這本書裡,在第1版中,我們看到的是當時方興未艾的面向對象,而第2版則透露出函數式程式設計的影響。如果說有什麼程式員進階秘笈,那就是不要錯過Martin Fowler的任何一部著作,更何況是已經由時間證明過的重要著作《重構》的新版!
——鄭晔,火币網首席架構師
如果看完本書,就興沖沖地想要找一些代碼來重構,那你可能就陷入某種“自嗨”之中了。
了解本書中列出的那些壞味道,不僅僅可以發現代碼中的那些壞味道,更可以鞭策自己以及整個團隊:在一開始的時候,就不寫或者少些那種味道很壞的代碼。還應該激勵自己,深入地了解架構、了解業務、了解需求,減少因設計失誤而導緻徒勞無益地反複重構。
重構也是有成本的,是以應該思考如何降低重構的成本。我推薦每一個程式員都來學習“重構”這門手藝。因為學習《重構》,是為了減少“重構”!
——莊表偉,開源社理事、執行長,華為雲DevCloud進階産品經理
總之,這部經典,用方方面面的實力,等着征服你。
02 《重構(第2版)》如何讀?本書是一本為專業程式員編寫的重構指南。
目的是告訴你如何以一種可控且高效的方式進行重構。你将學會如何有條不紊地改程序式結構,而且不會引入錯誤, 這就是正确的重構方式。
本書的目标讀者是專業程式員,也就是那些以編寫軟體為生的人。書中的範例和讨論,涉及大量需要詳細閱讀和了解的代碼。這些例子都用JavaScript寫成,
不過這些重構手法應該适用于大部分程式設計語言。為了了解書中的内容,讀者需要有一定的程式設計經驗,但需要的知識并不多。
盡管本書的關注對象是代碼,但重構對于系統設計也有巨大影響。資深設計師和架構師也很有必要了解重構原理,并在自己的項目中運用重構技術。最好是由有威望的、經驗豐富的開發人員來引入重構技術,因為這樣的人最能夠透徹了解重構 背後的原理,并根據情況加以調整,使之适用于特定工作領域。
如果你使用的不是 JavaScript而是其他程式設計語言,這一點尤其重要,因為你必須把将書中給出的範例用其他程式設計語言改寫。 如果你的時間緊張,如何能夠在不通讀全書的情況下充分用好它? ■如果你想知道重構是什麼,請閱讀第1章,其中的示例會讓你弄清楚重構的過程。
■
如果你想知道為什麼應該重構,請閱讀前兩章,它們會告訴你重構是什麼以及為什麼應該重構。
■如果你想知道該在什麼地方重構,請閱讀第3章,它會告訴你一些代碼特征,這些特征指出“這裡需要重構”。
■如果你想着手進行重構,請完整閱讀前四章,然後選擇性地閱讀重構名錄。一開始隻需概略浏覽清單,看看其中有些什麼,不必了解所有細節。一旦真正需要實施某個重構手法,再詳細閱讀它,從中擷取幫助。清單部分是供查 閱的參考性内容,你不必一次就把它全部讀完。
■從第5章往後的篇幅就是本書的核心部分——重構名錄。盡管不能說是一份巨細靡遺的清單,卻足以覆寫大多數開發者可能用到的關鍵重構手法。
作者曾說:”這份重構名錄的源頭是20世紀90年代後期我開始學習重構時的筆記,直到今天我仍然不時查閱這些筆記,作為對我不甚可靠的記憶力的補充。每當我想做點什麼——例如拆分階段 (154)——的時候,這份清單就會提醒我如何一步一步安全前進。我希望這是值得你曰後一再回顧的部分。“
給形形色色的重構手法命名是編寫本書的重要部分。合适的詞彙能幫助我們彼此溝通。當一名開發者向另一名開發者提出建議,将一段代碼提取成為一個函數,或者将計算邏輯拆分成幾個階段,雙方都能了解提煉函數(106)和拆分階段(154)是什麼意思。
這份詞彙表也能幫助開發者選擇自動化的重構手法。 03 如何成為《重構(第2版)》首批讀者?說了這麼多,是不是特别想成為《重構(第2版)》中文版的首批讀者?
我們希望在它和讀者朋友們正式見面之前,組織一次特别的讀書分享活動。尋找首批《重構(第2版)》的有緣人。
隻需要
掃描海報上的二維碼,
回答幾個簡單的問題,就可以參與到我們的活動中來。我們會從所有參與者中,篩選
50位搶讀人,發送《重構(第2版)》的專屬迷你電子書,并邀請你加入第一批《重構(第2版)》讀書會。
什麼是【專屬迷你電子書】?迷你電子書節選自《重構(第2版)》的12個章節,内容為重構的經典案例部分,單本厚度80頁左右,首季限量50冊,閱讀與收藏價值兼備。
你隻需要在讀完我們為你精選《重構(第2版)》迷你電子書後,在豆瓣本書頁面(也可掃描下方二維碼)下釋出150字以上的書評,活動結束後(3月20日12點為書評最後截止時間),
我們将評選 10個優秀書評 贈送《重構(第2版)》精裝版紙書一本 。
- END - 異步圖書聊聊圖書背後的故事