當前位置:
首頁 > 知識 > 豆瓣評分9.3!時隔20年,《重構》第二版終於來了!

豆瓣評分9.3!時隔20年,《重構》第二版終於來了!


來自:程序員書庫(ID:OpenSourceTop)


書單來自:

https://martinfowler.com/articles/refactoring-2nd-ed.html

在漫長的等待下,《重構》終於要出第二版啦!



  • 豆瓣評分9.3,銷量百萬



  • 世界級軟體開發大師Martin的不朽經典



  • 涵蓋70多個可行的重構

Martin在他的博客上發布了關於《重構(第2版)》的細節下面我們一起來詳細了解一下,第二版有哪些大的改變,

以下為Martin博客原文:


我很幸運能夠與Kent Beck一起參與推出極限編程的C3項目。我從Kent那學到了很多東西,其中有一點,就是他會不斷改進代碼庫來保證它健康,這個方法在當時還沒有名稱。 我在很多地方都強調過這種方法的重要性,但在市面上卻找不到關於這種技術的書籍,所以我打算自己寫一本,《重構》就這樣出現了

如今這項技術現在已經廣為人知,儘管它的執行情況往往不盡如人意,這本書很受歡迎,你依然可以通過這本舊書繼續學習如何重構,但它也確實老了,就像

java.util.Vector

一般。

這些年來我一直在考慮修訂它,但又不是那麼情願,畢竟它仍然能夠很好地解釋重構這一技術,而且第二版有一個可怕的習慣,就是在原版的基礎上沒有改進。但另一股力量又一直驅使著我,在寫這本書的時候,把「類」視為是構建代碼機制的主要結構已經成為主流。然而,現在我們看到其他結構發揮了更大的作用。在我看來,類仍然很有價值,但是重構已經比較少地以類為中心;我們要意識到,隨著代碼不斷被重構,類也是可以變化的。

在2015年和2016年初,我寫了一系列探索重構環境的各種文章,這讓我明確了是否要進行重寫,如果重寫,那又要如何處理?到2016年年中,我終於做好了開始的準備

工作

第二版變化

這些變化很小但又包羅萬象,當然書的基本結構是沒有改變的。本書從一個開放式的例子、一個章節的原則、一個「代碼壞味道」的調查和一個測試的介紹開始,大部分內容依然是重構,在這68個重構中,除了保留原有的10個,我還添加了17個新的重構。

儘管書的整體結構沒什麼變化,但內容上的文字變化是巨大的。每一章和重構示例都被重寫過,幾乎是從零開始,可以說沒有從舊版本中剪切和粘貼文本。

新版重新調整重心,將重點更少地放在類上。雖然這聽起來很簡單,只需將「提取方法」的名稱更改為「提取函數」,但它確實需要重新考慮每個重構的方方面面。我需要重新考慮這個動機,經常需要重新構建,這些結構至少需要一個詳細的審查,通常需要完全重寫。我沒有對此做詳細的說明,但我的感覺引用一個相對簡單的舊的重構,都需要重新考慮兩個重構。

然而,還有另一個變化在某種程度上並不重要,但肯定會得到很大的關注,就是這些示例

不再使用Java。

當我在寫作中選擇一種語言作為示例時,我首先想到的是讀者。「什麼樣的語言可以幫助大多數讀者理解書中的概念?」,重構不是一本特定於某種語言的書,裡面的示例已經通過Java中的示例進行了解釋,但是重構適用於大多數語言,我之所以選擇Java,是因為當時我覺得如果代碼示例是用Java編寫的,那麼大多數人都能夠理解它們。1997年確實是這樣,但2017年呢?

我考慮使用多種語言,以弱化與某一語言強相關的偏見。但我覺得這會讓讀者更困惑,最好是只使用一種語言,這樣他們就能習慣一致的表達形式。那麼哪一個對讀者來說是最平易近人的呢?這種語言需要廣泛流行,在語言流行度調查中排名前六,最好使用基於C語言的語法,因為大多數程序員都能識別基本的代碼結構。考慮到這一點,有兩門編程脫穎而出。一個是Java,它仍然被廣泛使用並且易於理解。但我選擇了另一種方法:

JavaScript。

選擇JavaScript對我來說是非常諷刺的,很多讀者可能都知道,我不喜歡它。它有太多令人尷尬的邊緣情況和笨拙的用法。ECMAScript 2015 (ES6)引入了一個相當好的類模型,它使得許多面向對象的重構更容易表達,但是仍然存在一些最原始的弊端。選擇它而不是Java的最主要原因是它並不完全以類為中心,它有頂層函數,使用頂級函數是很常見的,這使得重構變得更加容易。



以上就是關於《重構(第2版)》的大致內容,除此之外,Martin還提出《重構(第2版)》會推出電子書版本。在2018年感恩節期間,這本書的英文版發布了,從下圖可以看出,和第一版相比,輕薄了很多。這並不是因為頁數大幅下降的原因,新版本有416頁,之所以更薄是因為採用了更薄的紙張

據了解,《重構》中文版計劃2019年3月15日同步出版,喜歡的夥伴們到時不要錯過了

●編號698,輸入編號直達本文


●輸入m獲取文章

目錄

推薦↓↓↓



程序員書庫


更多推薦

25個技術類公眾微信


涵蓋:程序人生、演算法與數據結構、黑客技術與網路安全、大數據技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Linux學習 的精彩文章:

老羅的聊天寶出Bug!有人一天提現幾十萬

TAG:Linux學習 |