標題都這樣下了,當然要祭出《Refactoring》這部經典囉!
這本書問世到現在,重構已經是成熟的軟體技術了,對程式員來說,裡面的東西就如同空氣和水般,融入每天的編程中。
我只是手癢,上來把這部經典裡面的名句摘錄一番,日後也好隨時端詳端詳:
- 如果你發現自己需要為程式添加一個特性,而程式碼結構使你無法很方便地那麼做,那就先重構那個程式,使特性的添加比較容易進行,然後再添加特性。
- 重構之前,首先檢查自己是否有一套可靠的測試機制。這些測試必須有自我檢驗(self-checking)能力。
- 重構技術係以微小的步伐修改程式。如果你犯下錯誤,很容易便可發現它。
- 任何一個傻瓜都能寫出計算機可以理解的程式碼。唯有寫出人類容易理解的程式碼,才是優秀的程式員。
- 重構(Refactoring)(名詞):對軟體內部結構的一種調整,目的是在不改變「軟體之可察行為」前提下,提高其可理解性,降低其修改成本。
- 重構(Refactor)(動詞):使用一系列重構手法,在不改變「軟體之可察行為」前提下,調整其結構。
- 事不過三,三則重構。(Three strikes and you refactor)
- 不要過早發佈(published)介面。請修改你的程式碼擁有權政策,使重構更順暢。
- 程式碼的壞味道。(Bad smells in Code)
- Duplicated Code
- Long Method
- Large Class
- Long Parameter List
- Divergent Change
- Shotgun Surgery
- Feature Envy
- Data Clumps
- Primitive Obsession
- Switch Statements
- Parallel Inheritance Hierarchies
- Lazy Class
- Speculative Generality
- Temporary Field
- Message Chains
- Middle Man
- Inappropriate Intimacy
- Alternative Class with Different Interfaces
- Incomplete Library Class
- Data Class
- Refused Bequest
- Comments
- 當你感覺需要撰寫註釋,請先嘗試重構,試著讓所有註釋都變得多餘。
- 確保所有測試都完全自動化,讓它們檢查自己的測試結果。
- 一整組(a suit of)測試就是一個強大的臭蟲偵測器,能夠大大縮減搜尋臭蟲所需要的時間。
- 頻繁地執行測試。每次編譯請把測試也考慮進去,每天至少執行每個測試一次。
- 每當你接獲臭蟲提報(bug report),請先撰寫一個單元測試來揭發這隻臭蟲。
- 編寫未臻完善的測試並實際執行,好過對完美測試的無盡等待。
- 考慮可能出錯的邊界條件,把測試集中火力在那兒。
- 當事情被大家認為應該出錯時,別忘了檢查彼時是否有異常如預期般地被拋出。
- 不要因為「測試無法捕捉所有臭蟲」,就不撰寫測試碼,因為測試的確可以捕捉到大多數臭蟲。
2 comments:
我對於Refactoring的筆記: ^^
http://hpc.ee.ntu.edu.tw/~murphy/note/software_engineering/Refactoring.html
呵呵
我把它 bookmark 起來了 :)
Post a Comment