可以去看看《重構》 這本書。重構實際上就是調整程式碼,在保持程式碼功能不變的情況下,調整程式碼,使得它更容易被修改。
有幾個要點需要注意:·
有些人口中說的重構,其實指程式碼重寫。之後重寫失敗,就說重構無用,這樣就很冤枉了。重寫風險很大。舊系統無論看起來多爛,至少是可以執行的。而重寫程式碼時,新系統有很長一段時間不能執行,並且需要維護舊系統。並且有可能舊系統並非真的很爛,可能只是習慣不同,可能有些特殊情況你不知道,重寫不一定可以做得更好。·
做到這樣,你重構的工作就隨時可以停止。不能幾小時、幾天都停不下來。 ·
在重構過程當中,就算髮現了之前錯誤,也不能修改。應該記錄下來,等做完這次重構再修改,不然很容易在修改過程中引入其它錯誤。·
不要定下一兩週時間,說這個工作是重構。應該在整個專案過程當中,隨時開始,隨時停止。每一次重構都是很細微。·
新增修改程式碼已經不勉強了,就立即停止當前重構,繼續實現新功能。剋制住看不順眼就重構的慾望,只要可以順利完成當前工作,就立即停止。專案其它地方程式碼無論多爛都好,跟你今次的修改無關,就不要動它。不然你停不下來,白白浪費時間。當下一次需要新增功能時,再繼續上面步驟。或者你可以將看不順眼的地方記錄下來,等有時間或者想休息時候,就去調整一下,但需要隨時可以停止。·
這樣之前的程式碼就會越來越勉強,到有一天就會整個崩倒。·
架構很多時候並非一開始就全部設計好的,很難一開始就可以考慮到所有可能性。一開始,只要大方向正確就行,有大方向就可以將專案砍成幾大模組,之後再細分。細分到不確定、需要猜測時,就需要停了。某人覺得需要猜測的事,對更高水平的人來說,可能就是確定的。
細分之後,有時可以試試從下往上寫,先做些確定好,不容易變動的工作,比如編寫一些實用函式,一些小類。慢慢就可以在其中發現某種模式,將其將抽象往上層推。架構往往是進化出來,而非是設計出來的。假如已經有現成的,類似的專案,可以適當參考,也可以少走很多彎路。
《重構》這本書講述構的思想和各種具體的重構方法。一旦有了重構習慣,無論起初程式碼多爛,你都可以在其中工作。但有些公司,明明程式碼很爛,又不可以修改,或者每一次修改都需要填寫一大堆的報告,真是這樣的環境,工作起來就很痛苦了。
可以去看看《重構》 這本書。重構實際上就是調整程式碼,在保持程式碼功能不變的情況下,調整程式碼,使得它更容易被修改。
有幾個要點需要注意:·
重構並非重寫,不要將程式碼推倒重來。·有些人口中說的重構,其實指程式碼重寫。之後重寫失敗,就說重構無用,這樣就很冤枉了。重寫風險很大。舊系統無論看起來多爛,至少是可以執行的。而重寫程式碼時,新系統有很長一段時間不能執行,並且需要維護舊系統。並且有可能舊系統並非真的很爛,可能只是習慣不同,可能有些特殊情況你不知道,重寫不一定可以做得更好。·
儘可能保證程式碼時刻可以執行,並且功能不要缺失。·做到這樣,你重構的工作就隨時可以停止。不能幾小時、幾天都停不下來。 ·
重構和改變功能,同一時間內,只能做一樣。·在重構過程當中,就算髮現了之前錯誤,也不能修改。應該記錄下來,等做完這次重構再修改,不然很容易在修改過程中引入其它錯誤。·
重構是在專案整個過程當中的一種習慣,並非是其中的一個階段。不要定下一兩週時間,說這個工作是重構。應該在整個專案過程當中,隨時開始,隨時停止。每一次重構都是很細微。·
何時開始,當你感覺新增程式碼已經很勉強時,就需要重構。 何時停止,當重構之後,你當前的修改已經可以順利進行時,就立即停止。·新增修改程式碼已經不勉強了,就立即停止當前重構,繼續實現新功能。剋制住看不順眼就重構的慾望,只要可以順利完成當前工作,就立即停止。專案其它地方程式碼無論多爛都好,跟你今次的修改無關,就不要動它。不然你停不下來,白白浪費時間。當下一次需要新增功能時,再繼續上面步驟。或者你可以將看不順眼的地方記錄下來,等有時間或者想休息時候,就去調整一下,但需要隨時可以停止。·
不要害怕修改程式碼。 很多人都害怕修改程式碼,傾向於完全不修改程式碼,就新增功能。·這樣之前的程式碼就會越來越勉強,到有一天就會整個崩倒。·
架構很多時候並非一開始就全部設計好的,很難一開始就可以考慮到所有可能性。一開始,只要大方向正確就行,有大方向就可以將專案砍成幾大模組,之後再細分。細分到不確定、需要猜測時,就需要停了。某人覺得需要猜測的事,對更高水平的人來說,可能就是確定的。
細分之後,有時可以試試從下往上寫,先做些確定好,不容易變動的工作,比如編寫一些實用函式,一些小類。慢慢就可以在其中發現某種模式,將其將抽象往上層推。架構往往是進化出來,而非是設計出來的。假如已經有現成的,類似的專案,可以適當參考,也可以少走很多彎路。
《重構》這本書講述構的思想和各種具體的重構方法。一旦有了重構習慣,無論起初程式碼多爛,你都可以在其中工作。但有些公司,明明程式碼很爛,又不可以修改,或者每一次修改都需要填寫一大堆的報告,真是這樣的環境,工作起來就很痛苦了。