天天看點

《重構HTML:改善Web應用的設計(修訂版)》——1.4 反對重構的理由

本節書摘來自異步社群《重構html:改善web應用的設計(修訂版)》一書中的第1章,第1.4節,作者: 【美】elliotte rusty harold 更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

從ceo到經理,他們都對html故作沉思,拒絕接受重構的提議。這種情況屢見不鮮,雖然他們有很多說法,但通常不外乎:

我們沒有時間浪費在清理代碼上。現在馬上給我實作這個新特性!

對于這條意見我們可以做兩種回應。第一,從長遠來看,重構可以節省時間;第二,你擁有的時間實際上比想象的多。這兩條都是正确的。

從長遠來看,重構可以節省時間,但在短期内這也是可能的,因為整潔的代碼更容易修複和維護。以岩石作為基礎,比以流沙作為基礎更為容易和堅固。跟模糊的代碼相比,整潔的代碼更易查錯。實際上,當錯誤的來源并不明顯時,重構通常可以重制問題。重構的過程不僅改變代碼本身,也會改變我們對代碼的看法,讓我們能以前所未有的眼光看待老代碼。

當然,為最大程度上節省時間,盡可能地自動化重構是非常重要的。這也是我要強調使用工具(如tidy和tagsoup)以及基于正規表達式的簡單解決方案等方式的原因。盡管一些重構需要花費很大的精力,例如把網站從表格布局轉為css布局,但除此之外有很多東西都隻需單擊一下按鈕——比如将靜态的頁面轉化為良構的xhtml。很多重構在某種程度上是處于上述兩種狀态之間的。

對于重構的認知不足還表現在,大部分經理可以拿出更多安排表上計劃的時間用于重構。編寫新代碼不僅不容易,而且還需要大段連續的時間。典型的工作日不是收電子郵件、接電話、開會,就是抽煙休息,就是不能給開發者提供足夠長、連續工作的時間段。

反之,重構并不難。它并不需要大段的連續時間。不管是不同時間段加起來滿60分鐘的重構,還是一段連續60分鐘的重構,它們的效果基本一緻。60分鐘連準備編寫代碼的時間都不夠,而6分鐘對開發來說,就更沒有價值了。

同時也要考慮開發者的心境。開發者在某段時間的工作效率很高,但在另一段時間可能就不高,這是一個明顯的事實。有時你能一下子寫數百行代碼,但有時你壓根就不想碰鍵盤;有時你可以聚精會神于目前任務,但有時你會因牙痛、将要舉行的客戶會議和周末計劃而分心。編碼、設計和其他複雜的任務在分心時并不能做好。但是重構并不複雜,它是一件十分容易的事情。你可以步步為營、循序漸進,就算你處于工作效率不是那麼高的時候也無所謂。

更重要的是,我發現當我處于低潮時,重構能使我加快進入狀态。先熱身,然後再全身而入,這是一種做事方法。先從簡單的任務(比如重構)開始做起,讓我能從精神上進入狀态,進而能挑戰更大的問題。

盡管去做

順便說一句,重構并不是讓你進入狀态的唯一方式。推動你進入狀态的有效方式有很多。編寫測試、測量和改善代碼覆寫、修正已知錯誤、使用靜态代碼分析甚至拼寫檢查,都可以助你進入狀态讓你在不适合完成主要任務的時候同樣能做一些事。關鍵在于不要被任何單項的任務所阻滞。無論什麼時候總有其他的事情(很可能不止一件)在等着你去做,有時候,隻要找出在合适時間段完成的合适任務即可,不必為任務而趕時間。

重構充分展現了那句老俗話:學聰明點兒,别死用功。盡管這句話聽起來像是陳詞濫調,但用在這裡确實很貼切。

繼續閱讀